【问题标题】:Google Script is returning the index of the array but I need the valueGoogle Script 正在返回数组的索引,但我需要该值
【发布时间】:2021-12-16 02:06:22
【问题描述】:

我有一个谷歌电子表格,它通过谷歌表单获取数据。 每次记录表单时,它都会触发一个脚本,该脚本使用以下命令从某个部分获取值:

var tabNumsVal = sheet.getSheetValues(lastRow, tabOneCol.getColumn(), 1, 6)[0];

当我检查数组时,我可以看到数组的值如下:

0:12

1:24

2:26W

3:0

4:0

5:0

但是,当我使用以下命令时,它将索引号(0 到 5)放入数组而不是数组中的值。

var tabNumsFinal = [];
for (var tabard in tabNumsVal) {
  if (tabard !== "") {
    tabNumsFinal.push(tabard);
  }
}

它曾经可以工作,但我不得不将我的代码升级到 Google Script v8,这似乎破坏了代码。 我不得不将 'for each' 代码块更改为 'for' 代码块,这似乎以不同的方式处理值。

我很确定这对很多人来说很简单,但我真的每年只接触 Google Script 1 次。我曾尝试使用Logger.log(tabard) 将数据输出到执行日志,但它只是遍历代码并没有输出任何内容。我想这可能是因为 !== "" 运算符,所以我把它放在 if 语句之上,但仍然在 for 语句中,它仍然没有输出任何内容。 我尝试使用Logger.log(tabNumsVal)Logger.log(tabNumsFinal),但它再次没有输出。

回顾一下: 表单中的数据正确返回到电子表格的列中,因此它正确显示在数组中。只是输出的是索引号而不是数组中的值。

【问题讨论】:

    标签: arrays for-loop google-apps-script google-sheets


    【解决方案1】:

    由于您使用 for in 循环,所以 tabard 是这里的索引。

    var tabNumsFinal = [];
    for (var i in tabNumsVal) {
      let val = tabNumsVal[i];
      if (val !== "") {
        tabNumsFinal.push(val);
      }
    }
    

    For in loop

    【讨论】:

    • 这是 100% 的正确答案。非常感谢,我花了很长时间试图找到它,但找不到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多