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

如何获取Google Calendar API events.insert的requestBody TypeScript类型

我找到了一个用于构造传入calendar.events.insert({ calendarId: 'primary', requestBody: {...接口参数的优秀代码示例。

我想知道是否可以获取到requestBody对应的类型定义,从而可以按照如下方式编写代码:

const event: GoogleApiRequestBody = {
  summary: `和大卫的会议`,
  location: `加利福尼亚州旧金山加利福尼亚街3595号,邮编94118`,
  description: `和大卫讨论新客户项目,以及如何集成日历预约功能`,
  colorId: 1,
  start: {
    dateTime: eventStartTime,
    timeZone: 'America/Denver',
  },
  end: {
    dateTime: eventEndTime,
    timeZone: 'America/Denver',
  },
}

完整示例代码如下:

// 从googleapis包中引入google对象
const { google } = require('googleapis')

// 从google实例中引入oAuth2模块
const { OAuth2 } = google.auth

// 创建oAuth实例,配置客户端ID和客户端密钥
const oAuth2Client = new OAuth2(
  '此处替换为你的客户端ID',
  '此处替换为你的客户端密钥'
)

// 调用oAuth2Client实例的setCredentials方法,设置刷新令牌
oAuth2Client.setCredentials({
  refresh_token: '此处替换为你的刷新令牌',
})

// 创建日历服务实例
const calendar = google.calendar({ version: 'v3', auth: oAuth2Client })

// 创建临时测试用的事件开始时间
const eventStartTime = new Date()
eventStartTime.setDate(eventStartTime.getDay() + 2)

// 创建临时测试用的事件结束时间
const eventEndTime = new Date()
eventEndTime.setDate(eventEndTime.getDay() + 4)
eventEndTime.setMinutes(eventEndTime.getMinutes() + 45)

// 构造临时测试用的事件对象
const event = {
  summary: `和大卫的会议`,
  location: `加利福尼亚州旧金山加利福尼亚街3595号,邮编94118`,
  description: `和大卫讨论新客户项目,以及如何集成日历预约功能`,
  colorId: 1,
  start: {
    dateTime: eventStartTime,
    timeZone: 'America/Denver',
  },
  end: {
    dateTime: eventEndTime,
    timeZone: 'America/Denver',
  },
}

// 查询对应时间段日历是否已有安排
calendar.freebusy.query(
  {
    resource: {
      timeMin: eventStartTime,
      timeMax: eventEndTime,
      timeZone: 'America/Denver',
      items: [{ id: 'primary' }],
    },
  },
  (err, res) => {
    // 检查查询是否出错,存在错误则打印日志
    if (err) return console.error('忙闲查询错误: ', err)

    // 提取目标时间段内的所有日历事件
    const eventArr = res.data.calendars.primary.busy

    // 如果事件数组为空,说明当前时间段没有安排
    if (eventArr.length === 0)
      // 无安排则创建新的日历事件
      return calendar.events.insert(
        { calendarId: 'primary', resource: event },
        err => {
          // 检查是否出错,存在错误则打印日志
          if (err) return console.error('日历事件创建错误:', err)
          // 无错误则打印事件创建成功提示
          return console.log('日历事件创建成功。')
        }
      )

    // 事件数组不为空,说明当前时间段已有安排
    return console.log(`抱歉,当前时间段已有安排...`)
  }
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:09:04