我从提供给我使用的表单中获取此代码,但它效率低下并且在完成之前超时。我试图用一种超级简单的格式重写它,以便在限定时间内完成它。这就是我的开始:
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);
}
我通常不会编写代码,我可以理解我正在阅读的内容,但我对编写它并不了解。非常感谢帮助。提前谢谢。
答案 0 :(得分:0)
使用Google Script
Google在优化代码方面有一些excellent documentation。在这种情况下,您可以使用数组执行批处理操作。首先使用范围上的getValues()函数将电子表格数据提供给数组。请注意,getValues()返回范围内值的2D数组。循环遍历所有值并将它们按值一起添加。然后为所需范围指定完整数组的值。
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 Script
将以下公式放入已收到库存的单元格B50中:
=ARRAYFORMULA(B2:U48+Y2:AR48)
请参阅文档here。