Google 脚本返回超时错误的 Slack 命令
Slack command to Google Script returning Timeout Error
我设置了一个自定义斜杠命令来将数据存储到 Google 电子表格中。一切正常(脚本被触发并发挥其魔力) 除了 响应时间太长(超过给定的最大 3000 毫秒)并且 Slack 向我抛出 timeout
错误。
简化的google脚本:
function doPost(request) {
//// get data from slack payload
var params = request.parameters;
//// call a function with given parameters
custom_function(params);
////
var output = {"text":"SUCCESS"};
//// respond to slacks POST request
return ContentService.createTextOutput(JSON.stringify(output)).setMimeType(ContentService.MimeType.JSON);
}
结果:
由于 custom_function();
的执行时间长,结束 return ContentService. ...
来得太晚(超过 3000 毫秒时间限制)= timeout
松弛
错误
附加信息: 我用 UrlFetchApp.fetch(url,options);
设置了延迟响应,代码为 custom_function();
- 我在 Slack 中收到这些响应以及超时错误.
问题:有什么方法可以让我不必等到 custom_function();
完成后立即发送一些 HTTP 200 OK
回来吗?在我的例子中 doPost();
不需要 return 中的 custom_function
中的任何东西来完成,所以为什么要等......?
谢谢!
您可以为 运行 以后的代码创建一个基于时间的触发器。具体来说ClockTriggerBuilder的after
方法可以运行以后x毫秒的代码。
https://developers.google.com/apps-script/reference/script/clock-trigger-builder#after(Integer)
function doPost(){
//execute the the script function "myFunction" 100 ms in the future
ScriptApp.newTrigger("myFunction")
.timeBased()
.after(100)
.create();
return ContentService.createTextOutput("OK");
}
我设置了一个自定义斜杠命令来将数据存储到 Google 电子表格中。一切正常(脚本被触发并发挥其魔力) 除了 响应时间太长(超过给定的最大 3000 毫秒)并且 Slack 向我抛出 timeout
错误。
简化的google脚本:
function doPost(request) {
//// get data from slack payload
var params = request.parameters;
//// call a function with given parameters
custom_function(params);
////
var output = {"text":"SUCCESS"};
//// respond to slacks POST request
return ContentService.createTextOutput(JSON.stringify(output)).setMimeType(ContentService.MimeType.JSON);
}
结果:
由于 custom_function();
的执行时间长,结束 return ContentService. ...
来得太晚(超过 3000 毫秒时间限制)= timeout
松弛
附加信息: 我用 UrlFetchApp.fetch(url,options);
设置了延迟响应,代码为 custom_function();
- 我在 Slack 中收到这些响应以及超时错误.
问题:有什么方法可以让我不必等到 custom_function();
完成后立即发送一些 HTTP 200 OK
回来吗?在我的例子中 doPost();
不需要 return 中的 custom_function
中的任何东西来完成,所以为什么要等......?
谢谢!
您可以为 运行 以后的代码创建一个基于时间的触发器。具体来说ClockTriggerBuilder的after
方法可以运行以后x毫秒的代码。
https://developers.google.com/apps-script/reference/script/clock-trigger-builder#after(Integer)
function doPost(){
//execute the the script function "myFunction" 100 ms in the future
ScriptApp.newTrigger("myFunction")
.timeBased()
.after(100)
.create();
return ContentService.createTextOutput("OK");
}