在 google 脚本中使用 RTM API 将子(回复)消息发布到松弛通道中的线程时遇到问题

Having trouble posting a child (reply) message to thread in slack channel using the RTM API in google scripts

我创建了一个链接到电子表格的 google 脚本,该脚本旨在在更新单元格时向松弛通道线程发送消息。消息 post 正常发送到频道,但我无法将 'thread_ts' 属性添加到 post 消息作为对父级时间戳指示的特定线程的回复信息。我已经多次阅读文档。我做错了什么?

function myonEdit(e) {

    var sheet = SpreadsheetApp.getActiveSheet()  
    var range = e.range;
    var columnOfCellEdited = range.getColumn();

    if (columnOfCellEdited == 7) {
        var url = "https://hooks.slack.com/services/xxxx/xxxx/xxxx" ;
        var currentRow = sheet.getActiveCell().getRow()
        var name = sheet.getSheetValues(currentRow, 1, 1, 1);

        var payload = {
            "username" : "robot", 
            "text" : name,
            "icon_emoji": ":robot_face:",
            "icon_url" : "http://image",
            "thread_ts": "1511829070.000023"
       }

    sendToSlack_(url,payload) 
  }
}

   function sendToSlack_(url,payload) {
   var options =  {
       "method" : "post",
       "contentType" : "application/json",
       "payload" : JSON.stringify(payload),
  };
  return  UrlFetchApp.fetch(url, options)
  }

下面的修改怎么样?

修改点:

  • 无法使用 Incoming WebHooks 回复线程。对不起。我找不到关于这个的文件。我从我的经验中知道这一点。为了回复线程,需要一个访问令牌来做到这一点。您可以从 https://api.slack.com/custom-integrations/legacy-tokens 获取访问令牌或使用 OAuth2 流程获取。
  • 为了回复thread_ts,请在有效负载中添加频道名称或频道ID。

修改脚本:

此修改后的脚本使用访问令牌向线程发送消息。

function myonEdit(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = e.range;
  var columnOfCellEdited = range.getColumn();
  if (columnOfCellEdited == 7) {
    var url = "https://slack.com/api/chat.postMessage"; // Modified
    var currentRow = sheet.getActiveCell().getRow();
    var name = sheet.getSheetValues(currentRow, 1, 1, 1);
    var payload = {
      token: "### your access token ###", // Added
      channel: "#####", // Please input channel name or ID which includes thread_ts. // Added
      username : "robot", 
      text : name, // name[0][0] or JSON.stringify(name) may be suitable for this line.
      icon_emoji: ":robot_face:",
      icon_url : "http://image",
      thread_ts: "1511829070.000023",
    }
    sendToSlack_(url, payload);
  }
}

function sendToSlack_(url,payload) {
  var options =  {
    "method" : "post",
    // "contentType" : "application/json", // Removed
    "payload" : payload // Modified
  };
  return  UrlFetchApp.fetch(url, options)
}

如果我误解了你的问题,我很抱歉。