无需Zapier等付费工具,如何自动同步Slack消息至Google Sheet?
实现Slack新消息自动同步到Google Sheet的方案
步骤1:配置Slack Event API
- 登录Slack开发者平台,创建新App并关联目标工作区
- 在Event Subscriptions中开启事件订阅,先预留请求URL位置(后续用Google Apps Script部署URL填充)
- 订阅工作区事件:添加
message.channels(针对公开频道)或message.groups(针对私有频道),确保权限范围包含channels:history、groups:history - 将App安装到目标工作区,完成权限授予
步骤2:编写Google Apps Script
打开目标Google Sheet,点击扩展程序 > Apps Script,替换默认代码为以下内容:
function doPost(e) { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const payload = JSON.parse(e.postData.contents); // 处理Slack的URL验证请求 if (payload.type === 'url_verification') { return ContentService.createTextOutput(payload.challenge); } // 可选:过滤机器人发送的消息 if (payload.event.bot_id) return; // 提取消息核心信息 const timestamp = new Date(payload.event.ts * 1000); const userId = payload.event.user; const messageText = payload.event.text; const channelId = payload.event.channel; // 将数据追加到Sheet末尾,可按需调整列顺序 sheet.appendRow([timestamp, userId, channelId, messageText]); return ContentService.createTextOutput('同步成功'); }
- 保存脚本后,点击部署 > 新部署,选择部署类型为Web应用,权限设置为「任何人,甚至匿名」,部署后复制生成的Web URL
步骤3:完成Slack配置闭环
回到Slack开发者平台的Event Subscriptions页面,将复制的Web URL粘贴到Request URL,验证通过后保存所有设置
可选优化方向
- 调用Slack的
users.info接口获取用户昵称(需在Slack App中添加users:read权限,并在脚本中补充请求逻辑) - 对消息内容做格式化处理,比如解析表情、转换链接显示格式
- 添加日志记录,用
Logger.log()捕获同步异常便于排查
内容的提问来源于stack exchange,提问作者Daniel Bracamontes
相关产品推荐
相关产品推荐

