【问题标题】:Google Apps Spreadsheet Scripts Randomly Stopping?Google Apps 电子表格脚本随机停止?
【发布时间】:2012-07-24 10:39:53
【问题描述】:

我编写了一个简单的 Google Apps 电子表格脚本,该脚本在某些行中获取详细信息并将它们转换为单个列表;一切都很简单。问题是脚本一直在随机点停止,并且循环永远不会结束 - 没有错误消息,并且脚本编辑器顶部的消息仍然表明它正在运行,当它明显停止时。

我最初认为它可能以某种方式受到限制,但随机停止点(有时在源工作表行 6x,有时在 7x,有时甚至达到数百个)和缺少错误消息表明并非如此。

谁能帮我弄清楚为什么会这样?是因为我从脚本编辑器窗口运行它吗?是否有任何其他原因(可能是网络问题)导致应用程序脚本停止运行,如果是,是否可以在后台运行或类似的方式来防止这种情况发生?

谢谢!

function convertTrimsToList(){
  var ss = SpreadsheetApp.openById("[REDACTED]");
  var sheet = ss.getSheets()[0];
  var newss = SpreadsheetApp.create("MMT List");
  var newsheet = newss.getSheets()[0];

x = 1; z = 1; i = 1; q = 1; while (sheet.getRange(x,1).getValue() != "") { sheet.getRange(1,6).setValue("Processing row " + x); y = 5; while (sheet.getRange(x,y).getValue() != "") { sheet.getRange(1,7).setValue("Processing row " + y); if (x != 1) { if (y == 5 && sheet.getRange(x,1).getValue() != sheet.getRange((x-1),1).getValue()) { i++ } } newsheet.getRange(z,1).setValue(i); newsheet.getRange(z,2).setValue(q); newsheet.getRange(z,3).setValue(sheet.getRange(x,y).getValue()); z++ y++ } if (x != 1) { if (sheet.getRange(x,3).getValue() != sheet.getRange((x-1),3).getValue()) { q++ } } else { q++ } x++ } }

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    您的代码效率很低。对服务的每次调用都是昂贵的。这可能就是您的代码突然停止的原因。一种更有效的方法是将所有数据读入二维数组,然后在两个嵌套循环之后一次性写回电子表格。

    【讨论】:

      【解决方案2】:

      事实证明,这与这里发生的问题相同:Exceeded maximum execution time in Google Apps Script - 不知道为什么我没有收到错误消息,但似乎是同样的问题,所以我重构了我的代码以纠正它。

      【讨论】:

        猜你喜欢
        • 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
        相关资源
        最近更新 更多