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

如何在GCal转GSheets同步脚本中新增事件颜色导出功能?

可以实现导出Google Calendar事件颜色到Google Sheets

你只需要借助Google Apps Script中CalendarApp.Event的getColor()方法就能获取事件颜色,以下是修改后的完整脚本:

修改要点

  • 表头新增「事件颜色」列
  • 在循环中调用getColor()获取事件的十六进制颜色值
  • 调整对应单元格范围的列数(从14改为15)
function export_gcal_to_gsheet() {
    var mycal = "Email";
    var cal = CalendarApp.getCalendarById(mycal);
    var events = cal.getEvents(new Date("July 01, 2022 00:00:00 UTC"), new Date());
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Calendar2023");
    sheet.clearContents();  
    // 新增「事件颜色」表头
    var header = [["Calendar Address", "Event Title", "Event Description", "Event Location", "Event Start", "Event End", "Calculated Duration", "Visibility", "Date Created", "Last Updated", "MyStatus", "Created By", "All Day Event", "Recurring Event", "Event Color"]];
    // 列数从14改为15
    var range = sheet.getRange(6, 1, 1, 15);
    range.setValues(header);
    for (var i = 0; i < events.length; i++) {
        var row = events.length + 6 - i;
        var myformula_placeholder = '';
        // 新增getColor()获取事件颜色
        var details=[[mycal,events[i].getTitle(), events[i].getDescription(), events[i].getLocation(), events[i].getStartTime(), events[i].getEndTime(), myformula_placeholder, ('' + events[i].getVisibility()), events[i].getDateCreated(), events[i].getLastUpdated(), events[i].getMyStatus(), events[i].getCreators(), events[i].isAllDayEvent(), events[i].isRecurringEvent(), events[i].getColor()]];
        // 列数从14改为15
        var range=sheet.getRange(row,1,1,15);
        range.setValues(details);
        var cell=sheet.getRange(row,7);
        cell.setFormula('=(HOUR(F' +row+ ')+(MINUTE(F' +row+ ')/60))-(HOUR(E' +row+ ')+(MINUTE(E' +row+ ')/60))');
        cell.setNumberFormat('.00');
    }
}

可选优化:显示颜色名称而非十六进制值

如果想让表格显示「绿色」「蓝色」这类直观名称而非十六进制代码,可以添加颜色映射表,修改获取颜色的部分:

// 在循环外定义颜色映射
const colorMap = {
  "#16a765": "绿色",
  "#e67c73": "红色",
  "#fbd75b": "黄色",
  "#ffb6c1": "粉色",
  "#c3c3c3": "灰色",
  "#4285f4": "蓝色",
  "#34a853": "深绿色",
  "#fbbc05": "橙色",
  "#ea4335": "深红色",
  "#9c27b0": "紫色"
};

// 循环内替换颜色获取逻辑
var eventColor = colorMap[events[i].getColor()] || events[i].getColor();
// 然后在details数组中用eventColor代替events[i].getColor()

内容的提问来源于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 04:05:17