如何使用谷歌日历 api 创建一个新的谷歌会议

IT技术 reactjs api google-chrome google-calendar-api
2021-05-03 09:51:02

我需要实现一个 javascript 项目,该项目根据登录的用户创建新的 google meet,并将事件添加到日历并获取 google meet 的 url。如何在 JS 中使用 Google Calendar API 创建新的 google meet。

3个回答

回答:

conferenceData.createRequest创建 Calendar.Events: 插入请求以将 Meet 链接添加到日历事件时,您需要使用Events 资源参数。

更多信息:

根据Events: insertEvent resource reperesentation的文档

conferenceDataVersion integer

API客户端支持的会议数据版本号。版本 0 假定没有会议数据支持并忽略事件正文中的会议数据。版本 1 支持复制 ConferenceData 以及使用会议数据的 createRequest 字段创建新会议。默认值为 0。可接受的值为0to 1,包括在内。


conferenceData.createRequest nested object

生成新会议并将其附加到事件的请求。数据是异步生成的。要查看数据是否存在,请检查该status字段。

任一conferenceSolution和至少一个entryPoint,或createRequest是必需的。


conferenceData.createRequest.conferenceSolutionKey.type string

会议解决方案类型。

如果客户端遇到不熟悉或空的类型,它应该仍然能够显示入口点。但是,它应该禁止修改。

可能的值为:


conferenceData.createRequest.requestId string

客户端为此请求生成的唯一 ID。客户端应为每个新请求重新生成此 ID。如果提供的 ID 与前一个请求相同,则该请求将被忽略。

有了这些信息,我们就可以生成一个带有 Meet 链接的日历事件创建请求作为会议解决方案。

示例请求:

gapi.client.calendar.events.insert({
  "calendarId": "primary",
  "conferenceDataVersion": 1,
  "resource": {
    "end": {
      "date": "2020-10-24"
    },
    "start": {
      "date": "2020-10-23"
    },
    "conferenceData": {
      "createRequest": {
        "conferenceSolutionKey": {
          "type": "hangoutsMeet"
        },
        "requestId": "some-random-string"
      }
    },
    "summary": "titles are cool"
  }
});

注意:为了生成 Meet 链接,您必须设置conferenceData.createRequest.requestId任何随机字符串对于您希望创建的每个新会面链接,您必须在请求中使用不同的字符串

参考:

如果您不使用节点库,则请求axios如下。我没有从上面的答案中意识到conferenceDataVersion是一个查询参数。

let event = {
    summary: "some text",
    location: "some text",
    description: "some text",
    start: {
      dateTime: start,
      timeZone: timeZone,
    },
    end: {
      dateTime: end,
      timeZone: timeZone,
    },
    recurrence: [],
    attendees: [
      { email: 'johndoe@whatever.com }, 

    ],
    reminders: {
      useDefault: true,
    },
    conferenceData: {
      createRequest: {
        conferenceSolutionKey: {
          type: 'hangoutsMeet',
        },
        requestId: 'somerequestid,
      },
    },
  };
  
const createEventRequest = await axios({
    url: `https://www.googleapis.com/calendar/v3/calendars/${calendarId}/events?conferenceDataVersion=1`,
    method: 'POST',
    headers: {
      Authorization: `Bearer ${accessToken}`,
    },
    data: event,
  });

在 googleapis npm 包中扩展@Brit 的评论,它应该执行的方式是

let response = await calendar.events.insert({
    auth: auth,
        calendarId: calendarId,
        resource: event,
        conferenceDataVersion: 1
    });

event作为

let event = {
    'summary': `Appointment.`,
    'description': `Description`,
    'start': {
        'dateTime': dateTime['start'],
        'timeZone': 'Asia/Kolkata'
    },
    'end': {
        'dateTime': dateTime['end'],
        'timeZone': 'Asia/Kolkata'
    },
    'attendees': [
        {'email': '...@gmail.com'},
    ],
    'reminders': {
        'useDefault': false,
        'overrides': [
          {'method': 'email', 'minutes': 24 * 60},
          {'method': 'popup', 'minutes': 10},
        ],
    },
    "conferenceData": {
        "createRequest": {
            "conferenceSolutionKey": {
                "type": "hangoutsMeet"
            },
            "requestId": "JksKJJSK1KJSK"
        }
    },
    
};