提问人:Waly 提问时间:3/5/2022 最后编辑:Waly 更新时间:3/6/2022 访问量:187
为什么谷歌应用脚本对于自动化来说不稳定?
Why are google App scripts not stable for automation?
问:
我正在测试一个简单的脚本来创建 Google App Script,该脚本在提交 Google 表格时触发打开和更新 GitHub 问题,
如果我测试像这样的简单触发器:
var ghToken = "my_GitHub_Token";
function onFormSubmit(e) {
var title = "This is a static title";
var body = "this is the body";
var payload = {
"title": title,
"body": body
};
var options = {
"method": "POST",
"headers": {
"authorization": "token "+ghToken
},
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
var response = UrlFetchApp.fetch("https://api.github.com/repos/Example/Example/issues?access_token="+ghToken, options);
}
如果我排除了该触发器,它会起作用 - 但每次都不稳定,并且创建新问题的发布请求中缺少响应,
如果我尝试通过任何 get 请求将响应从 Google 表单传递到 github fetch,那就更糟了
所以这个触发器例如:
var ghToken = "my_GitHub_Token";
function onFormSubmit(e) {
var title = e.values[2];
var body = "this is the body";
var payload = {
"title": title,
"body": body
};
var options = {
"method": "POST",
"headers": {
"authorization": "token "+ghToken
},
"contentType": "application/json",
"payload": JSON.stringify(payload)
};
var response = UrlFetchApp.fetch("https://api.github.com/repos/Example/Example/issues?access_token="+ghToken, options);
}
上面的触发器不会在问题中传递任何响应,甚至不会在 GitHub 上发布任何问题(与第一个带有静态标题的触发器不同)。它无法传递任何内容,并且您在该触发器的日志中找不到任何功能来跟踪它停止的位置!
Google App Script 文档似乎描述了流畅的操作: https://developers.google.com/apps-script/guides/triggers/events#form-submit_1 - 但它在自动化方面似乎效率不高,即使是传递静态标题和纯文本的无用触发器似乎也无法每次都成功为触发器定义的方法。
我可能做错了什么,但是用于相同目的的在线可用脚本似乎也不起作用,例如:
这里:https://gist.github.com/bmcbride/62600e48274961819084 那里:https://medium.com/@01010111/using-google-forms-to-submit-github-issues-efdb5f876b
几乎到处都是 - 它们都没有像描述的那样运行,我不能复制和粘贴错误 - 因为我的控制触发器(第一个)令人担忧!并且每次提交都不稳定(它应该在 onFormSubmission 上打开一个新问题,但它不会每次都这样做 - 工作表响应上的某些记录会错过 GitHub 上的问题)。
答:
关于不稳定,Google Apps Script 遇到了问题,恕我直言,过去几天比平时更多。
昨天报告并分配了可能的相关问题
FormsApp:添加 setRespondentEmail() 方法(这是一个功能请求,不是问题)- Apps 脚本服务器会拒绝包含文件输入的表单。
此问题与 HTML 服务客户端代码 (google.script.run) 有关
当遇到服务问题(只有 Google 才能解决)时,请在应用脚本问题跟踪器上搜索类似问题并加注星标,如果没有找到任何问题,请发布新问题。
还要密切关注服务中断日志和 https://www.google.com/appsstatus/dashboard/
如果您使用的是 Google Workspace 帐号,请让您的管理员发送支持请求。
您可能还会发现分析哪个应该是 HTTP 响应对象很有帮助。为此,您可以使用response
console.log(response.getContentText())
相关
评论
console.log(response.getContentText())