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

无法通过Calendar API启用Google Meet的Attendance Report功能

解决方案:程序化启用Google Meet参会报告

核心问题分析

你之前的patch请求无效,是因为误用了conferenceData.createRequest(该参数用于新建Meet会议),而对于已存在Meet链接的事件,需要直接修改现有conferenceData.settings中的参会报告配置。

Google Apps Script 实现方案

以下脚本会遍历指定日历内的所有带Meet链接的事件,启用参会报告功能:

function enableAttendanceReportForMeetEvents() {
  const targetCalendarId = "your-calendar-id@domain.com"; // 替换为目标日历ID
  const eventList = Calendar.Events.list(targetCalendarId, {
    maxResults: 200, // 根据需求调整事件数量
    singleEvents: true,
    conferenceDataVersion: 1 // 必须设置,否则无法获取/修改会议数据
  });

  if (!eventList.items || eventList.items.length === 0) {
    console.log("未找到包含Google Meet链接的事件");
    return;
  }

  eventList.items.forEach(event => {
    // 筛选出带Google Meet的事件
    if (event.conferenceData?.conferenceSolution?.type === "hangoutsMeet") {
      // 构建更新体:保留原有会议数据,仅启用参会报告
      const updatePayload = {
        conferenceData: {
          ...event.conferenceData,
          settings: {
            ...event.conferenceData.settings,
            attendanceReportEnabled: true
          }
        }
      };

      // 执行更新
      Calendar.Events.patch(updatePayload, targetCalendarId, event.id, {
        conferenceDataVersion: 1
      });
      console.log(`已为事件「${event.summary}」启用参会报告`);
    }
  });
}

Python 实现方案(使用Google API客户端库)

如果偏好Python,以下代码实现相同功能:

首先安装依赖:

pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib

运行脚本:

from googleapiclient.discovery import build
from google.oauth2.service_account import Credentials

def enable_meet_attendance_reports(calendar_id):
    SCOPES = ["https://www.googleapis.com/auth/calendar"]
    SERVICE_ACCOUNT_KEY_PATH = "path/to/service-account-key.json" # 替换为你的服务账号密钥路径

    # 初始化API客户端
    credentials = Credentials.from_service_account_file(
        SERVICE_ACCOUNT_KEY_PATH, scopes=SCOPES
    )
    service = build("calendar", "v3", credentials=credentials)

    # 获取日历事件
    events = service.events().list(
        calendarId=calendar_id,
        maxResults=200,
        singleEvents=True,
        conferenceDataVersion=1
    ).execute().get("items", [])

    if not events:
        print("没有找到带Google Meet链接的事件")
        return

    for event in events:
        # 判断是否为Google Meet事件
        if (
            "conferenceData" in event
            and event["conferenceData"]["conferenceSolution"]["type"] == "hangoutsMeet"
        ):
            # 更新会议设置
            updated_conference_data = event["conferenceData"].copy()
            updated_conference_data["settings"] = updated_conference_data.get("settings", {})
            updated_conference_data["settings"]["attendanceReportEnabled"] = True

            # 提交更新请求
            service.events().patch(
                calendarId=calendar_id,
                eventId=event["id"],
                body={"conferenceData": updated_conference_data},
                conferenceDataVersion=1
            ).execute()
            print(f"已启用事件「{event['summary']}」的参会报告")

if __name__ == "__main__":
    target_calendar_id = "your-calendar-id@domain.com" # 替换为目标日历ID
    enable_meet_attendance_reports(target_calendar_id)

关键注意事项

  1. 权限要求:执行脚本的账号(或服务账号)必须拥有目标日历的编辑权限,且Google Admin Console中已为组织/用户开启「参会报告」功能(路径:Admin Console > Apps > Google Workspace > Google Meet > Meet settings)。
  2. conferenceDataVersion 参数:必须设置为1,否则API会忽略conferenceData相关的修改请求。
  3. 现有事件兼容性:无论事件是手动创建还是API创建,只要包含Meet链接,都可以通过此方法启用参会报告。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:50:54