如何从Google Sheets创建日历事件并将EventID写回表格
解决Google Sheets生成日历事件后写入EventID的问题
问题说明
现有代码可通过Google Sheets数据创建Google Calendar全天事件,但无法将生成的EventID写回表格的EventID列,需要修改代码实现该功能。
修改后的完整代码
function createCalendarEvent() { // 获取当前活动表格 var spreadsheet = SpreadsheetApp.getActiveSheet(); var calendarId = spreadsheet.getRange("F1").getValue(); var eventCal = CalendarApp.getCalendarById(calendarId); // 获取A4到F100的数据范围 var marketingEntries = spreadsheet.getRange("A4:F100").getValues(); // 遍历每一行数据 for (let x = 0; x < marketingEntries.length; x++) { var markEntry = marketingEntries[x]; // 跳过空行或已存在EventID的行,避免重复创建事件 if (!markEntry[0] || markEntry[5]) continue; var title = markEntry[0]; var date = markEntry[1]; var descrip = markEntry[2]; var gues = markEntry[3]; // 创建全天事件并获取事件对象 var newEvent = eventCal.createAllDayEvent(title, new Date(date), { description: descrip, guests: gues }); // 获取事件ID并写入对应行的EventID列(F列,第6列) spreadsheet.getRange(x + 4, 6).setValue(newEvent.getId()); } }
关键修改点说明
- 避免重复创建事件:添加判断逻辑
if (!markEntry[0] || markEntry[5]) continue;,空行(标题为空)或已存在EventID的行直接跳过,防止重复生成事件。 - 获取EventID:
createAllDayEvent方法返回创建完成的Event对象,调用其getId()方法即可获取该事件的唯一ID。 - 写入对应列:通过
getRange(x + 4, 6)定位到当前数据行的EventID列(F列),其中x + 4对应表格的实际行号(数据从第4行开始),6代表第6列(F列),最后用setValue()将ID写入单元格。
内容的提问来源于stack exchange,提问作者Stephen Bornheimer
相关产品推荐
相关产品推荐

