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

使用Slack API Bot获取消息导入Google Sheet遇代码问题求助

解决Slack API调用失败问题 + 简便导入消息到Google Sheet方案

一、代码问题修正

你的代码核心问题是通过URL参数传递token的方式不符合Slack当前的API规范,且缺少错误排查逻辑。现在Slack API推荐通过请求头传递token,同时必须检查API返回的状态来定位问题。

修正后的完整代码(包含写入Google Sheet逻辑):

function getConversationHistory() {
  var token = "YOUR_SLACK_API_TOKEN"; // 替换成你的有效token
  var channel = "CHANNEL_ID"; // 替换成目标频道ID
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 获取当前活动表格
  
  // 构造请求选项,通过请求头传递token
  var options = {
    "headers": {
      "Authorization": "Bearer " + token
    }
  };
  
  var url = "https://slack.com/api/conversations.history?channel=" + channel;
  var response = UrlFetchApp.fetch(url, options);
  var data = JSON.parse(response.getContentText());
  
  // 先检查API调用是否成功
  if (!data.ok) {
    Logger.log("API调用失败:" + data.error);
    return;
  }
  
  var messages = data.messages;
  // 准备写入表格的表头(如果表格为空)
  if (sheet.getLastRow() === 0) {
    sheet.appendRow(["消息内容", "时间戳"]);
  }
  
  // 遍历消息并写入表格(倒序写入保持时间顺序)
  for (var i = messages.length - 1; i >= 0; i--) {
    var message = messages[i];
    var text = message.text;
    var ts = new Date(parseFloat(message.ts) * 1000); // 转换时间戳为可读日期
    sheet.appendRow([text, ts]);
  }
}

关键修改点:

  • 用Authorization: Bearer {token}请求头替代URL参数传递token,避免编码问题和API限制
  • 添加data.ok检查,打印错误信息方便排查(比如权限不足、频道ID错误等)
  • 加入Google Sheet写入逻辑,自动添加表头并按时间顺序写入消息

二、更简便的实现方案

如果不想写代码,有两种更快捷的方式:

  • 无代码工具连接:用Zapier或Make这类自动化工具,直接配置Slack频道的新消息触发器,然后设置Google Sheet的「添加行」动作,全程可视化操作,不用写一行代码。
  • 手动导出导入:如果你的Slack工作区允许导出,直接在目标频道的设置里导出消息为CSV文件,然后打开Google Sheet,通过「文件>导入」选择CSV文件完成导入。

内容的提问来源于stack exchange,提问作者Miles

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 12:24:54