Google Script数组值未定义

时间:2018-03-27 13:25:41

标签: arrays google-apps-script google-sheets-api

我编写了一个代码,它应该从一个单元格中获取一个值,然后将其转换为字符串而不是数组。它的工作正常。我可以在Logs中看到arr的值作为带有单元格输入的数组。例如,在单元格中,“dog,cat”和log arr值在Logs中是[dog,cat]。

但是在我创建这个数组之后,我想在它上面做一个循环。而且我在Logs中,arr未定义。有人可以帮帮我吗?我工作了2天:(

这是我的代码:

function animal (s,z){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1');
var range = sheet.getRange("SM");
var columnNumber = getColumnNumberOfSM(s);
var rowNumber = getRowNumberOfSM(z);
var colAction = columnNumber + 1;
var action = sheet.getRange(rowNumber, colAction, 1, 1).getValues();
var bar = action.toString();
var arr = [{}];
arr = bar.split(", ");
//return arr; // returns an array [dog, cat]
var foo = arr; // underfined
for (var i = 0; i <= foo.length; ++i) {
if (foo[i] == "dog") {
     Logger.log(upload());
  }
 }
} 

现在我编辑我的代码并且工作正常,但只有“狗”而不是“猫”

function animal(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Sheet1');
var action = sheet.getRange("C3").getValue();
var bar = action.toString();
var arr = bar.split(", ");
for (var i = 0; i <= arr.length; ++i) {
if (arr[i] == "dog") { // works
     Logger.log(upload());
  }
if (arr[i] == "cat") { // doesn't work
     Logger.log(upload());
  }
}

}

1 个答案:

答案 0 :(得分:1)

你不需要将arr作为空白启动你可以直接初始化它作为分割方法的结果,还有一点我没有得到的是为什么你需要将arr分配给foo?您可以直接遍历arr.length并执行所需的操作。

这是我的工作片段。

var parts = path.split(",");
  for (var i = 0; i < parts.length; i++) {
    if (parts[i] == 'dog'){ 
        Logger.log(parts[i]);
    }
  }