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

导出带颜色的Gcal:如何将Google Calendar颜色同步至Google Sheets

从Google Calendar导出事项颜色并同步到Google Sheets的实现方法

现在可以通过Google Apps Script实现这个需求,利用Calendar API获取事项的颜色信息,再写入Google Sheets并同步格式,具体步骤如下:

1. 启用Calendar API并配置脚本环境

  • 打开目标Google Sheets,点击菜单栏「扩展程序」→「Apps Script」进入脚本编辑器。
  • 在脚本编辑器左侧,点击「服务」→「添加服务」,选择「Google Calendar API」并添加。

2. 编写核心脚本

替换代码中的YOUR_CALENDAR_ID(可在Google Calendar设置中找到)和SHEET_NAME(你的工作表名称):

function syncCalendarColorsToSheets() {
  const calendarId = 'YOUR_CALENDAR_ID';
  const sheetName = 'SHEET_NAME';
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
  
  // 清空现有数据(保留表头)
  sheet.getDataRange().offset(1, 0).clearContent().clearFormat();
  
  // 获取日历事项及颜色配置
  const calendar = Calendar.Calendars.get(calendarId);
  const colorMap = calendar.eventColors; // 日历的颜色映射表
  const events = Calendar.Events.list(calendarId, {
    timeMin: new Date(new Date().getFullYear(), 0, 1).toISOString(), // 同步年初至今的事项,可自行调整时间范围
    singleEvents: true,
    orderBy: 'startTime'
  });
  
  // 准备写入数据
  const rows = [];
  rows.push(['事项标题', '开始时间', '结束时间', '颜色ID', '颜色值']); // 表头
  
  if (events.items && events.items.length > 0) {
    events.items.forEach(event => {
      const start = event.start.dateTime || event.start.date;
      const end = event.end.dateTime || event.end.date;
      const colorId = event.colorId || '1'; // 默认颜色ID为1
      const colorHex = colorMap[colorId].background;
      
      rows.push([
        event.summary || '无标题',
        start,
        end,
        colorId,
        colorHex
      ]);
    });
  }
  
  // 写入数据到Sheets
  sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
  
  // 给行设置背景颜色
  for (let i = 2; i <= rows.length; i++) {
    const colorHex = rows[i-1][4];
    sheet.getRange(i, 1, 1, 5).setBackground(colorHex);
  }
}

3. 测试并设置自动同步

  • 点击脚本编辑器的运行按钮,首次运行会触发权限授权,按提示完成验证即可。
  • 验证成功后,脚本会自动将日历事项及对应颜色同步到指定工作表。
  • 若需要定期自动同步,点击左侧「触发器」→「添加触发器」,设置触发频率(比如每天定时运行)。

关键说明

  • 每个Google Calendar都有专属的eventColors映射表,colorId会对应返回该颜色的十六进制背景色值。
  • 可修改脚本中的timeMin参数调整同步的时间范围,例如改为new Date(new Date().getFullYear() - 1, 0, 1).toISOString()同步去年至今的事项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:50:28