如何在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
相关产品推荐
相关产品推荐

