如何使用Google App Script将eventid插入日历事件描述中
Google表单创建日历事件时自动写入EventID到事件描述
实现逻辑
事件ID是Google日历服务在事件创建成功后才生成返回的,无法在创建事件前提前写入初始描述,只需要在创建事件拿到ID后,更新事件描述字段即可,原有写入表格的逻辑可完全保留。
修改点说明
- 事件创建完成拿到
eventid后,调用event.setDescription()方法,将EventID追加到原有描述末尾 - 给EventID加明确的提示文字,方便用户找到复制
- 记得取消注释开头的
calendarId变量,填入你实际使用的日历ID
修改后可直接运行的代码
// 记得取消下面这行注释,替换为你自己的日历ID var calendarId = "id@group.calendar.google.com"; var typeId = 2; var nameId = 3; var startDtId = 4; var endDtId = 5; var emailId = 6 var eventId = 7 var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getDataRange(); var numRows = rows.getNumRows(); var values = rows.getValues(); var lr = rows.getLastRow(); function getLatestAndSubmitToCalendar() { var startDt = sheet.getRange(lr, startDtId, 1, 1).getValue(); var endDt = sheet.getRange(lr, endDtId, 1, 1).getValue(); var name = sheet.getRange(lr, nameId, 1, 1).getValue(); var email = sheet.getRange(lr, emailId, 1, 1).getValue(); // 这里保留你原来的描述文本即可 var desc = "text here" + "\n" + "text here" + "\n" + "text here"; var title = sheet.getRange(lr, typeId, 1, 1).getValue() + " " + name; createAllDayEvent(calendarId,title,startDt,endDt,desc,email); } function createAllDayEvent(calendarId, title, startDt, endDt, desc, email) { var cal = CalendarApp.getCalendarById(calendarId); var start = new Date(startDt); var end = new Date(endDt); end.setDate(end.getDate() + 1); var event = cal.createAllDayEvent(title, start, end, { description : desc, guests: email }); event.setGuestsCanModify(true); var eventid = event.getId(); // 追加EventID到事件描述 var finalDesc = desc + "\n\n---\n删除事件需使用的EventID:" + eventid; event.setDescription(finalDesc); // 原有写入表格的逻辑保留 sheet.getRange(lr, eventId, 1, 1).setValue(eventid); }
效果说明
用户收到日历邀请、查看事件详情时,会在描述末尾看到明确标注的EventID,后续搭建删除表单时,直接让用户提交这个ID即可匹配对应事件执行删除操作。
内容的提问来源于stack exchange,提问作者amein
相关产品推荐
相关产品推荐

