冷凝类似和重复的代码

时间:2014-10-08 19:59:54

标签: google-apps-script google-sheets

我是一名相当业余的编码员,但我有searched的解决方案,并没有提出任何建议。

我在Google工作表中工作,我想要做的是将两个不同列中同一行的值一起添加。我已经尝试了数组但是无法将第一个数组A添加到数组B中的第一个元素,因此我创建了代码,它工作正常,但它似乎太浪费了(我有21行要加在一起)。

你能否至少引导我到正确的位置来减肥呢?

var bd1  = data.getRange("K3");
var bn1  = data.getRange("H3").getValue();
var bo1  = data.getRange("K3").getValue();
var bs1  = bn1+bo1;
bd1.setValue(bs1); 

var bd2  = data.getRange("K4");
var bn2  = data.getRange("H4").getValue();
var bo2  = data.getRange("K4").getValue();
var bs2  = bn2+bo2;
bd2.setValue(bs2);
...  

2 个答案:

答案 0 :(得分:1)

我知道您已经接受了最佳答案,但在Google Apps脚本中进行电子表格API调用时,只有best practice to do them in batches {。}}。

你提到你这样做了21行;因此,我将首先排除所有21行的getValues()(将返回Javascript 2D数组),使用纯Javascript对该数组进行处理,然后一次性setValues()

var values1 = data.getRange("H3:H23").getValues();
var range2 = data.getRange("K3:K23");
var values2 = range2.getValues();
for (var i = 0, length = values1.length; i < length; i++)
  values2[i][0] += values1[i][0];
range2.setValues(values2);

答案 1 :(得分:0)

这是一种方法:

var add2Cells = function(labelA, labelB) {
    var cellA  = data.getRange(labelA);
    var cellB  = data.getRange(labelB);

    cellA.setValue(cellB.getValue() + cellA.getValue());
};

add2Cells("K3", "H3");
add2Cells("K4", "H4");

此时,您可以制作一系列细胞对,然后将其传入您的add2Cells函数。