【问题标题】:Google Script array value undefined谷歌脚本数组值未定义
【发布时间】:2018-03-27 22:19:27
【问题描述】:

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

但是在我创建了这个数组之后,我想在它上面做一个循环。与我在日志中相比,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());
  }
}

}

【问题讨论】:

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


【解决方案1】:

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

这是我的工作 sn-p。

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

【讨论】:

  • 非常感谢您的快速回答。我按照您的说法编辑了我的函数,但它仅适用于其中的名字(“狗”),但不适用于(“猫”)。有什么想法吗?
  • 请提供excel表格值样本以作进一步检查。这个问题似乎在 Javascript 中更具体。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多