You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在AppScripts中修改Google Calendar邀请的HangoutID(视频链接)

修改Google日历邀请中Hangout链接显示名称的解决方案

我之前在使用Apps Script通过Google Sheets创建日历邀请时,也碰到过一模一样的问题——原生的CalendarApp服务根本没提供修改Hangout链接显示名称的接口,默认就是显示受邀人名称,特别头疼。后来查了不少资料,终于找到可行的办法,分享给你:

核心问题:CalendarApp的局限性

Google Apps Script自带的CalendarApp服务对会议链接的控制非常有限,它只允许你获取Hangout ID/链接,但完全没有暴露修改其显示标签的方法。所以要实现这个需求,必须用Google Calendar Advanced Service(也就是官方Calendar API的封装)。

具体实现步骤

1. 启用Calendar Advanced Service

首先得在你的Apps Script项目里启用这个高级服务:

  • 打开Apps Script编辑器,点击顶部菜单的「扩展」→「Apps Script」(已在编辑器内可跳过)
  • 在编辑器里点击「服务」→「添加服务」,找到「Calendar」并添加,确保选择最新版本
  • 若碰到权限问题,需在Google Cloud Console中确认Calendar API已启用(添加服务时通常会自动处理)

2. 修改已有事件的Hangout链接显示名称

Calendar.Events.patch()方法可以局部更新事件的会议数据,重点是修改conferenceData.entryPoints里的label字段。示例代码如下:

function updateHangoutLabel() {
  const calendarId = 'primary'; // 替换为你的日历ID,primary代表当前用户主日历
  const eventId = 'abc123xyz'; // 替换成目标事件ID(可从CalendarApp创建的event.getId()获取)
  
  // 构造自定义会议链接数据
  const customConferenceData = {
    entryPoints: [
      {
        entryPointType: 'VIDEO',
        uri: 'https://meet.google.com/your-meet-link', // 替换为实际视频链接
        label: '项目同步会议链接' // 填写你想要显示的名称
      }
    ]
  };
  
  // 调用API更新事件
  Calendar.Events.patch(
    { conferenceData: customConferenceData },
    calendarId,
    eventId,
    { sendUpdates: 'all' } // 可选:给所有参会者发送更新通知
  );
}

3. 创建事件时直接设置自定义显示名称

如果是从Sheets创建邀请时就想设置好,可在创建事件后立即调用API修改,或直接用Calendar API的Events.insert()方法创建带自定义会议标签的事件:

function createEventWithCustomHangout() {
  const eventDetails = {
    summary: 'Q&A会议',
    start: { dateTime: '2024-06-01T14:00:00+08:00' },
    end: { dateTime: '2024-06-01T15:00:00+08:00' },
    guests: 'team-member@example.com',
    // 直接定义会议数据
    conferenceData: {
      createRequest: {
        conferenceSolutionKey: { type: 'hangoutsMeet' },
        requestId: 'random-string-123' // 填写任意唯一字符串即可
      },
      entryPoints: [
        {
          entryPointType: 'VIDEO',
          label: '团队Q&A专属链接'
        }
      ]
    }
  };
  
  // 用Calendar API创建事件
  Calendar.Events.insert(eventDetails, 'primary', { sendUpdates: 'all' });
}

注意事项

  • 修改已有事件时,需确保事件已关联Hangout/Meet链接,否则conferenceData字段不存在,需先创建会议链接再修改
  • sendUpdates参数可选none(不发通知)、all(给所有人发)、externalOnly(只给外部参会者发),按需选择
  • 事件ID获取:若用CalendarApp创建事件,event.getId()会返回类似abc123xyz@google.com的字符串,取@前的部分即为所需eventId

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

火山引擎 最新活动