Google 表格脚本 - 不同单元格中的循环值
Google Sheets Script - Loop values in different cells
我来自 VBA 和 Python,所以仍在尝试掌握 Google 表格中的 javascript。我正在尝试做一些非常简单的事情。
- 在 D 列中查找最后一行 - 成功
- 在 D 列中从第 2 行到最后一行命名数组 - 成功
- 复制第 i 行单元格的值并粘贴到 E 列 - 不成功
我需要它查看 data[0][0]
并复制 E 列中的信息,然后查看 data[1][0]
并复制 E 列中的信息,等等,直到 lastRow
.一切正常,直到最后一行,我收到一条错误消息 "The coordinates or dimensions of the range are invalid."
这是我的代码:(仅供参考:lastrow()
是一个在指定列中查找最后一行 # 的函数)
function GatherStoreInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ReportSheet = ss.getSheetByName('Report');
for (var i = 0; i < lastRow('A') + 1; i = i+1) {
var data = ReportSheet.getRange(2, 4, lastRow('D'), 1).getValues();
ReportSheet.getRange(i, 2).setValue(data[i][0]); // <- This doesn't work
}
}
好吧,经过更多的折腾,我明白了。我想我会 post 答案以防万一有人无意中发现了这个问题。
基本上是因为我从 0 开始 i 然后在范围内我告诉它从不存在的第 0 行开始,所以我不得不在范围内添加 i + 1 并且它起作用了。这是最终代码:
function GatherStoreInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ReportSheet = ss.getSheetByName('Report');
for (var i = 0; i < lastRow('A'); i = i+1) {
var data = ReportSheet.getRange(1, 4, lastRow('D'), 1).getValues();
SpreadsheetApp.getActiveSheet().getRange(i + 1, 5).setValue(data[i]);
}
}
我来自 VBA 和 Python,所以仍在尝试掌握 Google 表格中的 javascript。我正在尝试做一些非常简单的事情。
- 在 D 列中查找最后一行 - 成功
- 在 D 列中从第 2 行到最后一行命名数组 - 成功
- 复制第 i 行单元格的值并粘贴到 E 列 - 不成功
我需要它查看 data[0][0]
并复制 E 列中的信息,然后查看 data[1][0]
并复制 E 列中的信息,等等,直到 lastRow
.一切正常,直到最后一行,我收到一条错误消息 "The coordinates or dimensions of the range are invalid."
这是我的代码:(仅供参考:lastrow()
是一个在指定列中查找最后一行 # 的函数)
function GatherStoreInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ReportSheet = ss.getSheetByName('Report');
for (var i = 0; i < lastRow('A') + 1; i = i+1) {
var data = ReportSheet.getRange(2, 4, lastRow('D'), 1).getValues();
ReportSheet.getRange(i, 2).setValue(data[i][0]); // <- This doesn't work
}
}
好吧,经过更多的折腾,我明白了。我想我会 post 答案以防万一有人无意中发现了这个问题。
基本上是因为我从 0 开始 i 然后在范围内我告诉它从不存在的第 0 行开始,所以我不得不在范围内添加 i + 1 并且它起作用了。这是最终代码:
function GatherStoreInfo() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var ReportSheet = ss.getSheetByName('Report');
for (var i = 0; i < lastRow('A'); i = i+1) {
var data = ReportSheet.getRange(1, 4, lastRow('D'), 1).getValues();
SpreadsheetApp.getActiveSheet().getRange(i + 1, 5).setValue(data[i]);
}
}