1

菜鸟编码器在这里。我正在为一个项目使用 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 的新单元格范围?

伙计,我希望这是有道理的,任何和所有的帮助都会受到赞赏。再一次,上面的代码有效,只是试图创建一个一次可以处理多个事情的循环。

4

1 回答 1

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);
  ...
}

细节留给您,但这是您循环的基本结构。有更有效的方法可以完成这项工作,但由于您是新手,请在掌握基础知识后担心这一点。

于 2013-07-05T17:36:24.250 回答