如何通过Google Sheets向Google Calendar添加日程事件
Google Sheets 数据批量生成 Google 日历事件脚本
你的表格列格式及示例记录如下:
| Event Title | Start Date | Start Time | End Date | End Time | Description | Time Zone |
|---|---|---|---|---|---|---|
| TEST EVENT | 5/23/2024 Thu | 1:00 PM | 5/23/2024,Thu | 3:00 PM | NA | GMT +3 |
以下是实现批量创建日历事件的 Google Apps Script 代码:
function createCalendarEventsFromSheet() { // 获取当前活跃的表格 const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 读取所有数据,跳过第一行表头 const data = sheet.getDataRange().getValues().slice(1); // 遍历每一行数据 data.forEach(row => { const [eventTitle, startDateStr, startTimeStr, endDateStr, endTimeStr, description, timeZone] = row; // 跳过空行或关键信息缺失的行 if (!eventTitle || !startDateStr || !startTimeStr) return; // 清理日期字符串:移除末尾的星期标识和多余逗号 const cleanStartDate = startDateStr.replace(/(,)?\s*[A-Za-z]{3}$/, '').trim(); const cleanEndDate = endDateStr.replace(/(,)?\s*[A-Za-z]{3}$/, '').trim(); // 组合日期与时间字符串 const startDateTimeStr = `${cleanStartDate} ${startTimeStr}`; const endDateTimeStr = `${cleanEndDate} ${endTimeStr}`; // 解析为带时区的日期对象 const startDateTime = Utilities.parseDate(startDateTimeStr, timeZone, 'MM/dd/yyyy h:mm a'); const endDateTime = Utilities.parseDate(endDateTimeStr, timeZone, 'MM/dd/yyyy h:mm a'); // 处理描述字段:将"NA"替换为空字符串 const eventDescription = description === 'NA' ? '' : description; // 获取默认日历并创建事件(如需指定日历,可替换为CalendarApp.getCalendarById("日历ID")) const calendar = CalendarApp.getDefaultCalendar(); calendar.createEvent( eventTitle, startDateTime, endDateTime, { description: eventDescription, timeZone: timeZone } ); Logger.log(`已创建事件:${eventTitle}`); }); // 弹出完成提示 SpreadsheetApp.getUi().alert('事件批量创建完成!'); }
使用步骤
- 打开你的 Google Sheets 表格
- 点击顶部菜单栏「扩展程序」>「Apps 脚本」
- 删除默认代码,粘贴上述脚本
- 点击「保存」,给脚本命名(比如
SheetToCalendar) - 首次运行会触发权限验证,按指引完成授权即可
- 返回表格,运行脚本即可批量生成日历事件
示例效果
用你提供的测试记录运行脚本后,会在默认日历中生成一个:
- 标题为
TEST EVENT - 开始时间为2024年5月23日下午1:00(GMT+3时区)
- 结束时间为2024年5月23日下午3:00(GMT+3时区)
- 描述为空的日历事件
内容的提问来源于stack exchange,提问作者abdulrahman
相关产品推荐
相关产品推荐

