如何用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,可尝试以下方法:
- Google Takeout批量导出:定期通过Google Takeout导出Google Chat数据,导出文件会保存到Google Drive,再编写脚本定时读取Drive中的导出文件,解析后写入表格。缺点是无法实时监控,仅能批量处理历史数据。
- 手动导出+脚本导入:在Google Chat中手动导出特定空间的聊天记录(保存为CSV格式),上传到Drive后用脚本自动解析并导入表格,适合不需要实时监控的场景。
内容的提问来源于stack exchange,提问作者Nartaas
相关产品推荐
相关产品推荐

