[英]Clueless - Exceeding execution time
我从提供给我使用的工作表中获取了此代码,但是效率低下并且在完成之前会超时。 我正在尝试HARD以超简单的格式重写它,以使其在时限内完成。 这是我开始的:
function addTo() {
var ss = SpreadsheetApp.getActiveSheet();
// Style 1
// Size 2
var num1 = ss.getRange("AL2").getValue();
var num2 = ss.getRange("O2").getValue();
ss.getRange("O2").setValue(num1+num2);
ss.getRange("AL2").clearContent();
// Size 4
var num1 = ss.getRange("AM2").getValue();
var num2 = ss.getRange("P2").getValue();
ss.getRange("P2").setValue(num1+num2);
ss.getRange("AM2").clearContent();
然后重复大约200次。 有人建议将其作为范围进行处理。 这是有道理的,应该会加快流程。 但我在编写它时遇到了麻烦。 这是我到目前为止(虽然没有用):
function addallatOnce() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var startrange = ss.getRange("Inventory Received!B2:U48");
var addrange = ss.getRange("Inventory Received!Y2:AR48");
var complete = startrange+addrange
ss.getRange("Inventory Received!B50:U96").setValues(complete);
}
我通常不编写代码,我可以理解所读内容,但是对编写它一无所知。 帮助将不胜感激。 先感谢您。
使用Google脚本
Google在优化代码方面有一些出色的文档 。 在这种情况下,您可以使用数组执行批处理操作。 首先使用范围上的getValues()函数将电子表格数据输入数组。 请注意,getValues()返回范围内值的二维数组。 遍历所有值并将它们逐个值相加。 然后,为所需范围分配整个数组的值。
function addallatOnce() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var startrange = ss.getRange("Inventory Received!B2:U48").getValues(); var addrange = ss.getRange("Inventory Received!Y2:AR48").getValues(); var complete = addrange; var row = 0; var col = 0; for (row = 0; row < complete.length; row++) { for (col = 0; col < complete[0].length; col++) { complete[row][col] = addrange[row][col] + startrange[row][col]; } } ss.getRange("Inventory Received!B50:U96").setValues(complete); }
没有Google脚本
将以下公式放在“收到的库存”的单元格B50中:
=ARRAYFORMULA(B2:U48+Y2:AR48)
请参阅此处的文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.