You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 08:15:06