如何在Google Sheets同步数据到Google Calendar时添加事件颜色
实现Google Sheets数据同步日历并按E列设置事件颜色
要根据工作表E列的颜色选择为日历事件设置对应颜色编码,你需要修改脚本,建立工作表颜色值与Google Calendar颜色ID的映射关系,然后在创建事件时传入颜色参数。具体步骤如下:
1. 了解Google Calendar颜色规则
Google Calendar的事件颜色使用固定的colorId(数字ID),而非直接的RGB或颜色名称,常用对应关系参考:
- 蓝色: 1
- 绿色: 2
- 紫色: 3
- 橙色: 5
- 红色: 6
- 黄色: 7
- 灰色: 8
你可以在日历设置里查看所有颜色对应的ID,或直接用数字测试。
2. 修改后的完整脚本
function create_Events() { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName("Timesheet"); // 获取A到E列的所有数据 var vs = sh.getRange("A1:E" + sh.getLastRow()).getValues(); var cal = CalendarApp.getCalendarById("John@email"); // 建立工作表E列值与日历colorId的映射(可根据你的实际需求修改) const colorMap = { "蓝色": 1, "绿色": 2, "紫色": 3, "橙色": 5, "红色": 6, "#0000FF": 1, // 也支持直接匹配颜色代码 "#00FF00": 2 }; // 遍历每一行数据,注意解构时加入E列的colorVal vs.forEach(([t, s, e, d, colorVal]) => { // 从映射表获取对应的colorId,无匹配则用默认(可不传) const colorId = colorMap[colorVal] || undefined; // 创建事件时传入colorId参数 cal.createEvent(t, new Date(s), new Date(e), { description: d, colorId: colorId }); }); }
3. 关键修改说明
- 解构E列数据:在
forEach的参数里加入colorVal,对应工作表的E列值; - 颜色映射表:
colorMap定义了你工作表E列的颜色名称/代码和日历colorId的对应关系,你可以根据自己的实际输入(比如E列是下拉选的颜色名称,或直接填的十六进制代码)调整; - 传入颜色参数:在
createEvent的选项对象里添加colorId,将映射后的ID传入。
如果E列可能为空,脚本会自动使用日历默认颜色,无需额外处理。
内容的提问来源于stack exchange,提问作者RoosterMagic22
相关产品推荐
相关产品推荐

