我创建了一个链接到电子表格的Google脚本,该脚本旨在在更新单元格时将消息发送到Slack Channel线程。这些消息对频道发布正常,但是我无法获得" thread_ts"属性以将消息发布为对特定线程的回复,如时间戳记所指示的父邮件。我已经阅读了几次文档。我做错了什么?
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)
}
以下修改怎么样?
修改点:
- 它无法使用传入的Webhooks回复该线程。对不起。我找不到有关此文件的文件。我从我的经验中知道这一点。为了回复线程,需要一个访问令牌。您可以从https://api.slack.com/custom-integrations/legacy-tokens获得访问令牌或使用OAuth2 Process。
- 为了回复
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)
}
如果我误解了您的问题,对不起。