如何让Slack命令返回的“Success”消息对频道所有成员可见?
解决Slack命令成功消息仅个人可见的问题
我使用以下代码将Slack中的文本写入Google Sheet,目前功能运行正常,但执行命令后返回的“Success”消息仅能被操作该命令的用户看到,无法让频道内所有用户查看。请问如何修改代码,使该“Success”消息对频道内所有用户可见?
嗨,我来帮你搞定这个问题!
问题根源在于Slash命令的默认响应类型:你之前用ContentService.createTextOutput返回的是仅触发用户可见的临时消息(ephemeral)。要让消息对频道全体成员可见,只需修改响应格式,告诉Slack把消息公开发送到频道里就行。
修改方案详解
你需要返回一个包含response_type: "in_channel"的JSON响应,这是Slack官方支持的响应格式,用来指定消息的可见范围。
修改后的完整代码如下:
function doPost(e) { if (typeof e !== 'undefined') { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('Doorbug'); var lastRow = sheet.getLastRow(); // 提取Slack传入的参数 var parameter = e.parameter; var text = parameter.text; var userName = parameter.user_name; var channel = parameter.channel_name; var date = new Date(); // 拆分用户输入的文本数据 var data = text.split(','); var reg = data[0]; var email = data[1]; var location = data[2]; var ua = data[3]; var slackDetails = [date, reg, email, location, ua, userName, channel]; // 将数据写入Google Sheet sheet.getRange(lastRow + 1,1,1,7).setValues([slackDetails]); } // 关键修改:返回频道可见的JSON响应 var publicResponse = { "response_type": "in_channel", "text": "Success :)" }; return ContentService.createTextOutput(JSON.stringify(publicResponse)) .setMimeType(ContentService.MimeType.JSON); }
核心修改点说明
response_type: "in_channel":明确告诉Slack,这条消息要发送到命令执行的频道,所有成员都能查看JSON.stringify(publicResponse):把JavaScript对象转换成Slack能识别的JSON字符串格式.setMimeType(ContentService.MimeType.JSON):设置响应的MIME类型为JSON,确保Slack正确解析你的返回内容
这样修改后,下次执行Slack命令时,成功消息就会直接出现在频道对话里,所有成员都能看到啦!
内容的提问来源于stack exchange,提问作者Max
相关产品推荐
相关产品推荐

