javascript - Google Apps 脚本写入电子表格列一步落后

标签 javascript google-apps-script google-sheets

这里有一个奇怪的问题。我正在使用 Google Apps 脚本编写脚本。脚本的一部分从 1 个范围/数组(“a”)中获取值,在第二个范围/数组(“b”)中查找值,然后将第三个范围/数组(“c”)中的相应值写入电子表格中的 F 列。它基本上是一个vlookup。

当我检查代码、调试器等时,一切看起来都很好。并且输出到工作表中看起来也不错。除了当我运行程序时,工作表中缺少最后一个值。当我使用调试器缓慢运行程序时,似乎由于某种原因,在下一轮循环完成之前,这些值不会打印到 F 列。根据当时变量的值,这实际上没有任何意义。例如,当 i=4 时,它应该打印到 F6。但它会将之前的值打印到 F5。所有正确的值最终都位于正确的位置(最后一个除外),但发生这种情况时时间似乎已关闭,这就是为什么我错过了最后一个值。

注意:我尝试看看这是否只是时间延迟,但情况似乎并非如此。我已经重新加载了电子表格,等待了一段时间等等。仅落后了 1 步。

代码如下,我认为非常简单。任何帮助将不胜感激

loop1:
  for(i=0;i<a.length;i++){
    loop2:
    for(j=0;j<b.length;j++){
      if(a[i].valueOf() == b[j].valueOf()){
        sheet.getRange("F"+(i+2)).setValue(c[j]);
        break loop2;
      }
    }
  }

最佳答案

我尝试使用以下代码重新创建您的情况:

function myFunction() {
  var a = ['one','6','match'];
  var b = ['two','Vee','match'];
  var c = ['three','Vee','match'];

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();

  loop1:
    for(i=0;i<a.length;i++){
      loop2:
      for(j=0;j<b.length;j++){
        //Logger.log('a[i].valueOf() ' + a[i])
        //Logger.log('b[j].valueOf() ' + b[j])

        Logger.log(a[i].valueOf() == b[j].valueOf());
        if (a[i].valueOf() == b[j].valueOf()) {
          Logger.log('they match!');
          Logger.log('i: ' + i);
          Logger.log('j: ' + j);
          sh.getRange("F"+(i+2)).setValue(c[j]);
          break loop2;
        }
      }
    }
};

代码运行,并将一个值与提供的数组数据一起放入单元格 F4 中。

日志:

false
false
false
false
false
false
false
false
true
they match!
i: 2
j: 2

关于javascript - Google Apps 脚本写入电子表格列一步落后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34773430/

相关文章:

javascript - 将字符串与正则表达式数组匹配

google-apps-script - 有没有办法确定电子表格何时完成计算?

google-apps-script - 如何让脚本在手机和平​​板电脑上运行

google-sheets - Google 表格错误 "Array Arguments to SUMIFS are of different size"

google-apps-script - 谷歌应用脚​​本优化

javascript - node-mysql connection.query() 返回未定义

滚动到部分时 JavaScript 加载内容

javascript - 如何使用 Google Apps 脚本通过 USPS API 获取国内运费?

javascript - 发送 HTTP 请求以调用 Google Sheet API 来编辑单元格

javascript - 在 angujarjs 中过滤 ~6mb JSON 对象,是个坏主意吗?