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

使用Google Apps Script发送谷歌日历邀请时遇API调用错误求助

谷歌日历邀请发送问题排查与解决

问题描述

想用Google Apps Script发送谷歌日历邀请,但代码执行时持续报错:

  • 最初将代码最后一行从Calendar.Events.patch(event, calendar, event.id, args);修改为calendar.createEvent.patch(resource, calendarId, eventId, args)后,提示**"calendar.createEvent.patch is not a function"**
  • 查阅相关问题未找到解决方法,尝试方案后又出现**"GoogleJsonResponseException: API call to calendar.events.patch failed with error: Not Found"**
  • 目标日历已共享给我,我拥有查看所有事件、创建及修改事件的权限

测试代码

第一段测试代码

function testnotification(){
         var calendarId = "####";
         var eventId = "###";
         var email = "###@gmail.com"
         addGuestAndSendEmail(calendarId,eventId,email)
       }


      function addGuestAndSendEmail(calendarId, eventId, newGuest) {

      var calendar = CalendarApp.getCalendarById(calendarId);    
      var event = calendar.getEventById(eventId);
      var attendees = [];
      attendees.push({email: newGuest});
      var resource = { attendees: attendees };
      var args = { sendUpdates: "all" };

      calendar.createEvent.patch(resource, calendarId, eventId, args);
    }

第二段测试代码

function testNotification(){

         var calendarId = "###";
         var eventId = "###";
         var email = "###@gmail.com"
            addGuestAndSendEmail(calendarId,eventId,email)
       }
           
        function addGuestAndSendEmail(calendarId, eventId, newGuest) {
           Calendar.Events.patch({ attendees: [{ email: newGuest }] }, calendarId, eventId, { sendUpdates: "all" });
    }

问题分析与解决建议

第一个错误原因:API调用方式错误

calendar.createEvent.patch是完全错误的写法——CalendarApp.getCalendarById()返回的是CalendarApp类实例,它没有createEvent.patch方法。patch是**日历高级服务(Calendar Advanced Service)**的专属方法,只能通过Calendar.Events.patch()调用,不能和CalendarApp的实例混用。

第二个错误"Not Found"的可能原因及解决

  1. 事件ID格式错误
    • 确认eventId是完整事件ID:如果是从CalendarApp的event.getId()获取的ID,需注意其格式为日历ID@google.com_事件ID,可以直接使用完整字符串,或者去掉前缀只保留后面的事件ID部分。
  2. 日历ID验证
    • 确保calendarId正确,可从日历设置的「集成日历」中复制,格式通常为xxx@group.calendar.google.com或个人邮箱地址。
  3. 高级服务未启用
    • 使用Calendar.Events.patch()必须先启用日历高级服务:
      1. 打开脚本编辑器,点击菜单栏「资源」→「高级Google服务」
      2. 找到「Calendar API」,开启开关后点击「确定」
  4. 权限范围确认
    • 重新运行脚本,确保授权弹窗中所有权限都已通过,避免因权限不足导致的访问失败。

修正后的可用代码

推荐使用日历高级服务写法,同时保留原有参会者(避免覆盖):

function testNotification() {
  var calendarId = "你的日历ID";
  var eventId = "你的完整事件ID";
  var email = "guest@example.com";
  addGuestAndSendEmail(calendarId, eventId, email);
}

function addGuestAndSendEmail(calendarId, eventId, newGuest) {
  // 获取现有参会者,避免覆盖原有名单
  var existingEvent = Calendar.Events.get(calendarId, eventId);
  var attendees = existingEvent.attendees || [];
  attendees.push({ email: newGuest });
  
  // 更新事件并发送通知
  Calendar.Events.patch(
    { attendees: attendees },
    calendarId,
    eventId,
    { sendUpdates: "all" }
  );
}

提示:若无需保留原有参会者,可直接设置attendees: [{ email: newGuest }],但会替换所有现有参会者,谨慎使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 00:25:09