请求修改Google Apps Script以提取日历访客姓名并合并至单个单元格
解决方案:提取日历活动访客姓名并合并到单个单元格
我完全懂你折腾3天的那种挫败感——从视频学基础、找类似方案、翻官方文档,最后只搞定了邮箱提取。别担心,我帮你把脚本改成提取访客姓名并合并成逗号分隔格式,直接替换就能用。
这里是修改后的完整脚本:
function getTomorrowEvents() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Tomorrow"); var start_time = sheet.getRange("b2").getValue(); var end_time = sheet.getRange("d2").getValue(); var id_cal = sheet.getRange("B1:F1").getValue(); var cal = CalendarApp.getCalendarById(id_cal); var events = cal.getEvents(new Date(start_time), new Date(end_time)); // 可选:清空之前的旧数据,避免重复堆积 if (sheet.getLastRow() > 3) { sheet.getRange(4, 2, sheet.getLastRow()-3, 6).clearContent(); } for (var i = 0;i<events.length;i++){ var title = events[i].getTitle(); var start_time = events[i].getStartTime(); var end_time = events[i].getEndTime(); var loc = events[i].getLocation(); var des = events[i].getDescription(); var guests = events[i].getGuestList(); var guestNames = []; // 用数组存姓名,最后合并更高效 for (var j = 0; j < guests.length; j++) { var guest = guests[j]; // 优先取姓名,无姓名则用邮箱前缀当备用 var guestName = guest.getName() || guest.getEmail().split('@')[0]; guestNames.push(guestName); } // 把数组转成逗号分隔的字符串,避免末尾多余逗号 var guestNamesStr = guestNames.join(', '); sheet.getRange(i+4,2).setValue(title); sheet.getRange(i+4,3).setValue(start_time); sheet.getRange(i+4,4).setValue(end_time); sheet.getRange(i+4,5).setValue(loc); sheet.getRange(i+4,6).setValue(des); sheet.getRange(i+4,7).setValue(guestNamesStr); } Logger.log("Events have been added to the Spreadsheet"); }
核心改动说明:
- 替换获取逻辑:把
getEmail()改成getName(),这是CalendarApp专门用来获取访客姓名的方法 - 优化字符串拼接:用数组存储姓名,最后用
join(', ')合并,既高效又不会出现末尾多一个逗号的问题 - 增加容错处理:如果访客没有设置显示姓名(只有邮箱),自动截取邮箱@符号前的部分作为备用名称
- 可选的旧数据清空:每次运行前清理之前的活动记录,避免表格里数据重复堆积
直接替换原脚本后运行,就能在对应单元格看到逗号分隔的访客姓名了。
内容的提问来源于stack exchange,提问作者Darrell Ellis
相关产品推荐
相关产品推荐

