创建一个在google Scripts中逐行修改的循环

时间:2013-05-02 20:44:20

标签: loops google-apps-script google-sheets

新手编码器在这里。我正在Google Scripts中为一个项目工作,这就是我正在尝试做的事情。

基本上,我试图通过在我的“2013”​​电子表格的单元格K2中输入的AICP地址访问特定的电子表格(称为“Top Sheet”)。我在“Top Sheet”电子表格中访问的信息是位于单元格K46中的单个数字。然后,我将获取单元格K46的值(位于“Top Sheet”中)并将其放入“2013”​​电子表格中的新单元格(N2)中。

这就是它的样子(并且有效)。

 function GetJobActuals() {
   var ss = SpreadsheetApp.getActiveSpreadsheet();  
   var s2 =SpreadsheetApp.openById(ss.getSheetByName("2013").getRange("K2:K2").getValue());
   var v2 = s2.getSheetByName("Top Sheet").getRange("K46:K46").getValue();
   ss.getSheetByName("2013").getRange("N2:N2").setValue(v2);
   var s3 = SpreadsheetApp.openById(ss.getSheetByName("2013").getRange("K3:K3").getValue());
   var v3 = s3.getSheetByName("Top Sheet").getRange("K46:K46").getValue();
   ss.getSheetByName("2013").getRange("N3:N3").setValue(v3);

我现在要做的是,它会在“2013”​​电子表格中的所有前面的单元格中实现。例如,此代码适用于一个数字。 “2013”​​中的单元格K2告诉它在“Top Sheet”中检索单元格K46的值,然后返回该值并将其放入新单元格N2中。

我如何循环这个以便这个过程会发生在K2-K60的细胞范围内并且重新填充N2-N60的新细胞范围?

男人,我希望这是有道理的,任何和所有的帮助都表示赞赏。再次,上面的代码工作,只是尝试创建一个可以一次处理多个事物的循环。

1 个答案:

答案 0 :(得分:2)

如果您使用Sheet.getRange(row,column)代替Sheet.getRange(a1Notation),则答案应该清晰明了。通过使用行号和列号代替A1表示法,您可以应用for循环来实现目标。

ss.getSheetByName("2013").getRange("N3:N3").setValue(v3);

  becomes

ss.getSheetByName("2013").getRange(3,14).setValue(v3);
                                   ^^^^
                        Row = 3, Column = 14 ("N")

所以你可以迭代行:

for ( row=2; row<=60; row++) {
  ...
  var s3 = SpreadsheetApp.openById(ss.getSheetByName("2013").getRange(row,11).getValue());
  ...
  ss.getSheetByName("2013").getRange(row,14).setValue(v3);
  ...
}

详细信息留给您,但这是您的循环的基本结构。有更有效的方法来完成这项工作,但由于您不熟悉这一点,因此在您掌握了基础知识后,请担心这一点。