Google Apps脚本每个帐户每天都有6小时触发的脚本限制。
我最近开始收到提醒Service using too much computer time for one day
。
是否有办法按项目跟踪触发脚本的总时间?
到目前为止,我发现了post,但我需要查找我的所有50个项目。
谢谢
答案 0 :(得分:1)
如果我的理解是正确的,那么这种方法呢?通过更新Apps Script API,添加了用于检索项目过程的方法。我认为这可以用于上述情况。
startTime
和endTime
设置检索总执行时间的期限。在使用此脚本之前,请按以下步骤启用Apps脚本API。
在API控制台上启用Apps Script API:请在清单文件(appsscript.json
)中添加以下范围。
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/script.processes"
]
在运行此脚本之前,请先设置startTime
和endTime
。这是计算总时间的时间。在此示例脚本中,计算了从2019-02-07T00:00:00.000Z
到2019-02-08T00:00:00.000Z
的总时间。
function myFunction() {
var startTime = "2019-02-07T00:00:00.000Z"; // Please set this.
var endTime = "2019-02-08T00:00:00.000Z"; // Please set this.
var params = {headers: {Authorization: "Bearer " + ScriptApp.getOAuthToken()}};
var data = [];
var nextPageToken = "";
var url = "https://script.googleapis.com/v1/processes";
do {
var query = "?fields=%2a" +
"&pageToken=" + encodeURIComponent(nextPageToken) +
"&userProcessFilter.types=TIME_DRIVEN" +
"&userProcessFilter.startTime=" + encodeURIComponent(startTime) +
"&userProcessFilter.endTime=" + encodeURIComponent(endTime);
var res = JSON.parse(UrlFetchApp.fetch(url + query, params).getContentText());
Array.prototype.push.apply(data, res.processes);
nextPageToken = res.nextPageToken || "";
} while (nextPageToken);
var result = data.reduce(function(obj, e) {
obj[e.functionName] = obj[e.functionName] ? obj[e.functionName] + Number(e.duration.replace("s", "")) : Number(e.duration.replace("s", ""));
return obj;
}, {});
Logger.log(result)
}
作为示例情况,当由时间驱动的触发器运行myFunction1
和myFunction2
的两个功能时,此脚本返回以下结果。结果表明,对于startTime
和endTime
,myFunction1
和myFunction2
的总执行时间分别为123.456 s和12.345 s。
{
"myFunction1": 123.456,
"myFunction2": 12.345
}
startTime
和endTime
,这是RFC3339 UTC“ Zulu”格式的时间戳,精确到纳秒。示例:2014-10-02T15:01:23.045123456Z
。这是来自官方文件。如果这对您的情况没有帮助,我深表歉意。