Google脚本不会设置值

时间:2015-04-23 21:29:02

标签: javascript google-apps-script

我正在尝试更改循环中单元格的值。所有变量都应按原样定义,但状态本身不会更改并返回undefinedFunction 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();
}

但是这会导致其他行的内容发生变化,并且还需要一个额外的循环。 我在这里错过了什么(小)的事情?

3 个答案:

答案 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);