试图了解配额限制导致的服务错误。

时间:2017-01-02 09:31:53

标签: google-apps-script

我有两个类似的脚本每天午夜在两个不同的电子表格上运行,按时触发事件。我不知道为什么,但是几天后我的脚本不再执行了,我的邮箱中出现以下错误:Service using too much computer time for one day

所以我看了Google Apps Quotas guide,但我真的不明白。我不明白我的脚本的哪个部分达到了一些限制,我应该怎么做才能解决这个问题。

这是我的剧本:

function saveData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var data1 = sheet.getRange('data!B3').getValue();
  var data2 = sheet.getRange('data!C3').getValue();
  var data3 = sheet.getRange('data!D3').getValue();
  var data4 = sheet.getRange('data!E3').getValue();
  var data5 = sheet.getRange('data!F3').getValue();
  var data6 = sheet.getRange('data!A3').getValue();
  sheet.appendRow([data1,data2,data3,data4,data5,data6]);
}   

任何提示?这是因为我使用了太多相同的方法吗?哪个配额指的是这个?

谢谢!

3 个答案:

答案 0 :(得分:1)

我不确定问题究竟是什么,但是你的代码可以减少getRange调用的数量,这会更清洁一些,但速度会更快。我假设sheet [0]被称为数据:

function saveData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheets()[0];
  var data = sheet.getRange('A3:F3').getValues()[0];
  sheet.appendRow([data[1],data[2],data[3],data[4],data[5],data[0]]);
}  

答案 1 :(得分:0)

根据Google Apps配额指南:"服务使用过多的计算机时间一天:这表示脚本超过了一天允许的总执行时间。最常见的是在触发器上运行的脚本,其每日限制低于手动执行的脚本。"

触发器的运行时间不能超过30秒。

您的脚本可能超过此执行时间。

答案 2 :(得分:0)

感谢所有评论和回答,我解决了我的问题。我清理了可从脚本编辑器访问的触发器列表(ressources =>触发器列表)。我发现了一些触发器,我不知道哪个触发器添加了我正在使用的Google Drive附加组件。我也像utphx建议的那样重构我的代码。