是否可以通过App脚本代码查询配额限制的当前状态?

问题描述 投票:2回答:1

我已经在Google App脚本中编写了一些代码,由于达到执行配额限制,我经常出现异常。

我想避免这种异常,但是我没有找到任何类或方法来查询配额的当前状态。

google-apps-script google-drive-api
1个回答
4
投票

很遗憾,没有单个功能可以让您直接跳过任何配额限制。

但是,您可以构建一个简单的体系结构,一旦您知道遇到哪种速率限制(例如,时间或命中次数等),就可以构建代码的逻辑来适应这种情况。

示例:bypass script execution timeout, programmatically-]的操作方法>

检测阈值的代码-

// var today = new Date();
// 'today' is declard in the original script

function isTimeUp(today) {
  var now = new Date();
  return now.getTime() - today.getTime() > 30000;
  // 30000 = 30 seconds; this is the threshold limit
  // you are free to setup your own threshold limit
}

有意破坏代码的代码(在脚本为您执行之前),因此您可以以编程方式设置触发器,以在破坏代码的地方进行处理-

function firstFunction() {
    var today = new Date();
    for (var i = 0; i < something.length; i++) {
        // check if the script has exceeded threshold
        if (isTimeUp(today)) {
            // schedule a trigger for a different function
            ScriptApp.newTrigger("repeatFunction")
                .timeBased()
                .everyMinutes(1)
                .create();
            break;
        }
    }
}

function repeatFunction() {
    for (/* condition */) {
        // do stuff; maybe not everything from firstFunction()
        if (/* test condition that defines the last action */) {
            var triggers = ScriptApp.getProjectTriggers();
            for (var i = 0; i < triggers.length; i++) {
                // delete all triggers
                ScriptApp.deleteTrigger(triggers[i]);
            }
            break;
        }
    }
}

我知道您可能不需要太多的编码部分,但是我很乐意根据需要提供帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.