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

如何用Google Apps Script获取Google Chat私信及空间消息并同步至表格?

可行的Google Apps Script实现方案及替代方案

核心方案:使用Google Chat Advanced Service

目前Google Apps Script通过Google Chat Advanced Service可以实现对私信和空间消息的监控,具体步骤如下:

步骤1:启用Google Chat API

  • 在Google Apps Script编辑器中,点击「扩展」>「高级Google服务」
  • 找到「Google Chat API」,开启开关后点击「确定」
  • 按提示跳转到Google Cloud Console完成API启用,完成后返回编辑器即可

步骤2:编写监控脚本

以下脚本会自动获取所有私信(DM类型空间)和普通空间的新消息,并存入指定Google表格:

function monitorChatMessages() {
  // 配置项:替换为你的表格ID和工作表名称
  const SPREADSHEET_ID = "你的Google表格ID";
  const SHEET_NAME = "聊天记录";
  const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);
  
  // 获取上次运行时间(首次运行默认取24小时前)
  const lastRunTime = sheet.getRange("A1").getValue() || new Date(Date.now() - 24*60*60*1000);
  
  // 获取所有空间:包含普通空间和私信(DM类型)
  const spaces = Chat.Spaces.list({
    filter: "spaceType IN ('SPACE', 'DM')"
  }).spaces || [];
  
  // 遍历每个空间,抓取新消息
  spaces.forEach(space => {
    const spaceId = space.name;
    const spaceName = space.displayName || "私信"; // 私信无默认名称,手动标注
    const spaceType = space.spaceType;
    
    // 筛选上次运行时间之后的消息
    const messages = Chat.Messages.list(spaceId, {
      filter: `createTime > "${lastRunTime.toISOString()}"`,
      pageSize: 100 // 可根据需求调整单次获取的消息数量
    }).messages || [];
    
    // 将消息写入表格
    messages.forEach(message => {
      const createTime = new Date(message.createTime);
      const senderName = message.sender.displayName || "未知发送者";
      const messageContent = message.text || "无文本内容";
      
      // 追加记录:时间、发送者、内容、空间类型、空间名称
      sheet.appendRow([createTime, senderName, messageContent, spaceType, spaceName]);
    });
  });
  
  // 更新上次运行时间到表格A1单元格
  sheet.getRange("A1").setValue(new Date());
}

步骤3:设置定时触发

  • 在Apps Script编辑器中,点击「编辑」>「当前项目的触发器」
  • 点击「添加触发器」,配置:
    • 选择函数:monitorChatMessages
    • 事件源:「时间驱动」
    • 触发类型:选择「小时计时器」或「分钟计时器」(根据监控频率需求)
    • 保存即可自动定时运行

注意事项

  • 权限:首次运行脚本需授权访问Google Chat和Google Sheets的权限
  • 配额限制:Google Chat API有请求配额,消息量大时需调整分页逻辑或降低监控频率
  • 合规性:确保你有权限监控对应空间的消息,遵守组织隐私政策

替代方案(API受限场景)

如果因组策略无法使用Google Chat API,可尝试以下方法:

  1. Google Takeout批量导出:定期通过Google Takeout导出Google Chat数据,导出文件会保存到Google Drive,再编写脚本定时读取Drive中的导出文件,解析后写入表格。缺点是无法实时监控,仅能批量处理历史数据。
  2. 手动导出+脚本导入:在Google Chat中手动导出特定空间的聊天记录(保存为CSV格式),上传到Drive后用脚本自动解析并导入表格,适合不需要实时监控的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 16:56:18