Javascript 谷歌脚本赢得';t设定值

Javascript 谷歌脚本赢得';t设定值,javascript,google-apps-script,Javascript,Google Apps Script,我试图改变循环中单元格的值。所有变量都按其应有的方式定义,但状态本身不会改变,并返回未定义或函数未找到错误 我的代码如下 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 dat

我试图改变循环中单元格的值。所有变量都按其应有的方式定义,但状态本身不会改变,并返回
未定义
函数未找到
错误

我的代码如下

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

for(var i=0;i这是因为您将
numColumns
定义为总共有8列,而status字段是第9列(您从0开始计数)。因此,它不在您定义的范围内。在第二个范围内,由于您的范围是9,所以它可以正常工作。

实际错误是,
状态
是一个值,而不是单元格对象,因此它没有“设置值”。您应该使用调试器,调试器会告诉您确切的行和问题。在第二种情况下,您正确地使用了getRange。
另一种回答是,您正在使用不同的列索引(分别为8和9)

复制您尝试执行的操作的最简单方法是替换:

for (i in data) {
与:

与:


谢谢,试过了,这加上“完成”到第I20-I21和I22行,而不是第2、3和4行。我已更新了我的问题,以显示我正在尝试对循环执行的操作。我应该如何将状态声明为单元格对象,以便可以使用setValue?我尝试使用
row
变量,但这似乎也不起作用。您需要构建一个范围对象。您已经对该对象执行了操作,这也是不可行的他给出的另一个答案很糟糕,但仍然无法解决问题。找不到获取
函数
for (var i=0; i<numRows; i++) {
status.setValue(done);
sheet.getRange(startRow + i, 9).setValue(done);