创建一个循环,修改一行又一行在谷歌脚本



新手编码员。我正在为一个项目在谷歌脚本工作,这是我想做的。

本质上,我试图通过在"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的新细胞范围?

我希望这是有意义的,任何和所有的帮助是感激的。同样,上面的代码可以工作,只是尝试创建一个循环,一次可以处理多个内容。

如果您使用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);
  ...
}

细节留给您,但这是循环的基本结构。有一些更有效的方法可以做到这一点,但由于您是新手,请在基本工作完成后再担心。

相关内容

最新更新