如何通过Google Calendar API在Google Apps Script中获取Google Meet链接?
Google日历事件Line每日推送:修复会议数据获取问题
问题根源
- 方法名拼写错误:原代码中
item.getconferencedata()不符合Google Apps Script的驼峰命名规范,正确方法应为getConferenceData() - 会议数据处理不当:
getConferenceData()返回的是对象而非字符串,直接拼接会显示无效内容,需要提取实际会议链接或信息
修正后的完整代码
// 初始化日历(默认日历,如需指定其他日历可改用getCalendarById("日历ID")) const calendar = CalendarApp.getDefaultCalendar(); const Now = new Date(); const Start = new Date(new Date().setHours(0, 0, 0, 0)); const End = new Date(new Date().setHours(23, 59, 59, 999)); const calendarData = calendar.getEvents(Start, End); // 替换为你的Line Notify Token数组 const NotifyTokens = ["你的Token1", "你的Token2"]; function Notify() { let NotifyContents = ''; let i = 1; calendarData.forEach(item => { if (Now <= item.getStartTime()) { // 标题处理 NotifyContents += item.getTitle() ? `\n${i}. ${item.getTitle()}\n` : "\n\nNo Title\n"; // 描述处理 NotifyContents += item.getDescription() ? `${item.getDescription()}\n` : ""; // 时间处理 if (item.getStartTime() && item.getEndTime()) { const startTimeStr = item.getStartTime().toLocaleTimeString(); const endTimeStr = item.getEndTime().toLocaleTimeString(); NotifyContents += `Time:${startTimeStr}-${endTimeStr}\n`; } // 会议数据处理 const conferenceData = item.getConferenceData(); if (conferenceData) { // 提取Google Meet链接(适配常见会议类型) const entryPoints = conferenceData.getEntryPoints(); let meetLink = ""; if (entryPoints.length > 0) { meetLink = entryPoints.find(ep => ep.getEntryPointType() === "VIDEO")?.getUri() || entryPoints[0].getUri(); } NotifyContents += meetLink ? `会议链接:${meetLink}\n` : "已设置会议,但无可用链接\n"; } else { NotifyContents += "No Conference\n"; } i++; } }); if (!NotifyContents) return; NotifyTokens.forEach(token => { UrlFetchApp.fetch("https://notify-api.line.me/api/notify", { method: "post", payload: { message: NotifyContents }, headers: { Authorization: `Bearer ${token}` } }); }); }
关键修改说明
- 补全日历初始化代码,确保
calendar变量有效 - 修正会议数据方法名,改为正确的
getConferenceData() - 新增会议数据解析逻辑:从
ConferenceData对象中提取视频会议链接(优先Google Meet) - 优化变量声明,使用
let替代var符合现代JS规范 - 简化条件判断写法,提升代码可读性
内容的提问来源于stack exchange,提问作者Jack Chou
相关产品推荐
相关产品推荐

