使用Google Calendar API批量创建事件时日历显示错误求助
问题分析
你已经正确获取了目标日历的实例cal,但循环创建事件时,错误调用了CalendarApp.getDefaultCalendar()(指向你的个人主日历)的createEvent方法,这就是事件全跑到个人日历的原因。
修复代码
把创建事件的主体换成你提前获取的目标日历对象cal即可。另外注意原代码里的数据范围B1:D对应数组索引0-2,但你用了data[i][3]作为location,这里列数不匹配,需要调整数据范围或者检查表格列对应关系:
function create_Events(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Sheet1"); var last_row = sheet.getLastRow(); // 假设location在E列,调整范围为B1:E+last_row,保证能取到location数据 var data = sheet.getRange("B1:E" + last_row).getValues(); var cal = CalendarApp.getCalendarById("XXXXXXXXXXXXXXXXXXXX@group.calendar.google.com"); for(var i = 0; i < data.length; i++){ // 跳过表头行(如果B1是标题的话) if(i === 0) continue; var event = cal.createEvent( data[i][0], new Date(data[i][1]), new Date(data[i][2]), {location: data[i][3]} ); Logger.log('Event ID: ' + event.getId()); } }
额外提醒
- 确认你拥有目标日历的编辑权限,没有权限的话会报错,先去日历设置里获取编辑权限。
- 表格里的日期列必须是有效日期格式,不然
new Date()解析会出问题。 - 如果表格第一行是表头,一定要加
if(i === 0) continue;跳过,避免创建无效事件。
内容的提问来源于stack exchange,提问作者user28338128
相关产品推荐
相关产品推荐

