如何让Google Apps Script生成的日历事件描述包含Sheet表头与对应值?
解决Google Apps Script中日历事件描述显示「表头:对应值」的问题
没问题,我来帮你调整这段代码,让日历事件的描述自动显示「表单表头:对应值」的格式!
方法一:直接硬编码字段(适合字段固定的情况)
你可以直接在拼接描述的时候,把每个表单字段的名称和对应值组合起来,替换原来的options部分就行:
function createDayEvent(eventObject) { if (eventObject.allDay == 'Yes') { var calendar = CalendarApp.getCalendarById(GLOBAL.calendarId), title = eventObject.title, startDate = moment(eventObject.startDate).toDate(), endDate = moment(eventObject.endDate).toDate(); // 修改这里的描述拼接逻辑 var options = { description : eventObject.description +'\n' + 'formquestion1: ' + eventObject.formquestion1 + '\n' + 'formquestion2: ' + eventObject.formquestion2 + '\n' + 'formquestion3: ' + eventObject.formquestion3 }; var event = calendar.createAllDayEvent(title, startDate, endDate, options); return event; } }
这样生成的描述就会是:
原描述内容
formquestion1: Test
formquestion2: Test1
formquestion3: Test2
方法二:动态生成(适合字段可能增加的情况)
如果以后表单可能添加新的字段,不想每次都改代码,可以先把所有表单字段名存在一个数组里,然后循环拼接,这样更灵活:
function createDayEvent(eventObject) { if (eventObject.allDay == 'Yes') { var calendar = CalendarApp.getCalendarById(GLOBAL.calendarId), title = eventObject.title, startDate = moment(eventObject.startDate).toDate(), endDate = moment(eventObject.endDate).toDate(); // 定义所有表单字段的名称数组 var formFieldNames = ['formquestion1', 'formquestion2', 'formquestion3']; // 先保留原来的描述内容 var descriptionLines = [eventObject.description]; // 循环每个字段,拼接成「表头:值」的格式 formFieldNames.forEach(function(fieldName) { // 确保字段有值才添加,避免空行 if (eventObject[fieldName]) { descriptionLines.push(`${fieldName}: ${eventObject[fieldName]}`); } }); // 把所有行用换行符连接 var options = { description: descriptionLines.join('\n') }; var event = calendar.createAllDayEvent(title, startDate, endDate, options); return event; } }
小提醒
我注意到你原来的代码最后少了闭合的大括号,上面的代码已经帮你补上了,不然运行的时候会报语法错误哦~
内容的提问来源于stack exchange,提问作者chillsky
相关产品推荐
相关产品推荐

