我很难与Ranges一起解决为什么我需要在 getRange 中添加 i + 1 来获取循环中正确的单元格。我不确定它是否因为我在变量之前增加或是否与初始值有关?
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getDataRange();
var values = range.getValues();
for (var i = 3; i < 30; ++i) {
var row = values[i];
var msgSent = row[3];
sheet.getRange(i + 1, 4).setValue("ALERTED");
感谢任何帮助!
答案 0 :(得分:2)
.getRange()
只使用基于整数的引用,而values
的2D数组需要使用从零开始的方法引用。
values
中的第1行(数组)为values[0]
,但.getRange()
使用.getRange(1, 1)
来引用工作表的第1行第1列。第一行中的第一列值为values[0][0]
。
现在,如果您循环浏览30行左右并想要一次性设置值,这比逐个设置它们要好得多,它会看起来像这样。 ..
var s = ss.getSheetByName('Sheet1');
var newValues = [];
for (var i = 3; i < 30; ++i) {
var row = values[i];
var msgSent = row[3];
newValues.push(["ALERTED"]);
}
s.getRange(4, 4).offset(0, 0, newValues.length).setValues(newValues);