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

使用Google脚本迁移日历事件时遇‘Not Found’错误的问询

解决Google脚本中Calendar.Events.move的"Not Found"错误

嘿,这个Not Found错误本质上是Google Calendar API在告诉你:它找不到你要操作的资源——要么是你传入的事件ID无效,要么是日历ID有问题,更可能的是你调用Calendar.Events.move的方式不对。

咱们来拆解你代码里的问题:

1. 核心问题:Calendar.Events.move的调用参数错误

你现在的调用是:

Calendar.Events.move(pubCalId, eventToMove.getId(), privCalId);

但Google Apps Script的Calendar Advanced Service里,move方法的正确语法是需要把目标日历ID放在配置对象的destination属性里,而不是直接作为第三个参数。正确的参数结构应该是:

Calendar.Events.move(pubCalId, eventId, { destination: privCalId });

2. 次要问题:事件ID的兼容性

CalendarApp.getEvents()返回的事件对象,其getId()方法有时候返回的是服务本地的ID格式,而Calendar Advanced Service需要的是全局唯一的事件ID。更稳妥的做法是使用eventToMove.getOriginalId()来获取符合API要求的ID(如果是原生Google日历事件,getId()和getOriginalId()可能一致,但用后者兼容性更好)。

修正后的完整代码

function export_gcal_to_gsheet(){ 
  // pubCal: public calendar 
  // privCal: private calendar 
  var pubCalId = "addressForPubicCal@group.calendar.google.com"; 
  var privCalId = "addressForPrivateCal@group.calendar.google.com"; 
  var pubCal = CalendarApp.getCalendarById(pubCalId); 

  // Change date range to move events from pubCal to privCal 
  var startDate = new Date("January 1, 2018 00:00:00 CST"); 
  var endDate = new Date("January 04, 2018 23:59:59 CST"); 

  // Extract events between certain dates in public calendar. 
  var events = pubCal.getEvents(startDate, endDate); 

  // Loop through all Calendar events
  // 用for循环比while+shift更直观,避免数组操作的潜在问题
  for (var i = 0; i < events.length; i++){ 
    var eventToMove = events[i];
    // 修正调用方式,用getOriginalId()获取正确的事件ID
    Calendar.Events.move(pubCalId, eventToMove.getOriginalId(), { destination: privCalId }); 
  } 
}

额外注意事项

  • 确保你已经在脚本编辑器中启用了Calendar Advanced Service:点击「资源」→「高级Google服务」,找到Calendar API并开启它。
  • 检查两个日历ID是否完全正确,没有拼写错误(比如你代码里的pubCall是笔误,不过变量名是pubCalId,应该没问题)。
  • 确认你的脚本有访问这两个日历的权限:第一次运行脚本时,会弹出权限请求,需要授权允许脚本访问你的日历数据。

内容的提问来源于stack exchange,提问作者user1301593

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:35:36