You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 07:57:03