我正在尝试更改循环中单元格的值。所有变量都应按原样定义,但状态本身不会更改并返回undefined
或Function not found
错误。
我的代码如下
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2;
var numRows = 3;
var dataRange = sheet.getRange(startRow, 1, numRows, 8)
var data = dataRange.getValues();
for (i in data) {
var row = data[i];
var name = row[0];
var name2 = row[1];
var mother = row[2];
var father = row[3];
var sister = row[4];
var grandpa = row[5];
var mail = row[6];
var type = row[7];
var status = row[8];
var done = "DONE";
var not_done = "NOT DONE";
if (status = "TODO") {
//Do something...
status.setValue(done);
}
else {
//Do nothing...
}
}
表格的标题是:
Name Name2 Mother Father Sister Grandpa Mail Type Status
我尝试添加新循环
for (var i=0; i<numRows; i++) {
Utilities.sleep(500);
sheet.getRange(i+2, 9).setValue("DONE");
SpreadsheetApp.flush();
}
但是这会导致其他行的内容发生变化,并且还需要一个额外的循环。 我在这里错过了什么(小)的事情?
答案 0 :(得分:0)
这是因为您将numColumns
定义为总共有8列,而状态字段是第9列(您开始计数为0)。因此它超出了您定义的范围。在第二个中,它的排序是有效的,因为你的范围是9。
答案 1 :(得分:0)
实际错误是status
是一个值而不是单元格对象,因此它没有“setValue”。您应该使用调试器,它会告诉您确切的行和问题。在第二种情况下,你正确使用getRange。
另外一个答案说你正在使用不同的列索引(分别为8和9)
答案 2 :(得分:0)
复制您尝试做的最简单的方法是替换:
for (i in data) {
使用:
for (var i=0; i<numRows; i++) {
并替换:
status.setValue(done);
使用:
sheet.getRange(startRow + i, 9).setValue(done);