Slack命令返回Google脚本超时错误

时间:2017-02-27 19:53:53

标签: google-apps-script slack

我设置了一个自定义斜杠命令来将数据存储到Google电子表格中。一切运作完美(脚本被触发并发挥其魔力)除了响应时间太长(超过给定的最大值3000ms)并且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();并不需要custom_function中的任何内容以换取结束,为什么要等待......?

感谢!

1 个答案:

答案 0 :(得分:3)

您可以创建基于时间的触发器以便将来运行代码。具体来说,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");
}