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");
}