基本上,我试图通过在我的“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的新细胞范围?
男人,我希望这是有道理的,任何和所有的帮助都表示赞赏。再次,上面的代码工作,只是尝试创建一个可以一次处理多个事物的循环。
答案 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);
...
}
详细信息留给您,但这是您的循环的基本结构。有更有效的方法来完成这项工作,但由于您不熟悉这一点,因此在您掌握了基础知识后,请担心这一点。