使用 types(script) for Google Calendar API 来帮助输入事件
Using types(script) for Google Calendar API to help typing events
为进入 calendar.events.insert({ calendarId: 'primary', requestBody: {...
的 requestBody
找到了这个 awesome code example
想知道是否可以得到requestBody
类型,所以可以这样写
const event: GoogleApiRequestBody = {
summary: `Meeting with David`,
location: `3595 California St, San Francisco, CA 94118`,
description: `Meet with David to talk about the new client project and how to integrate the calendar for booking.`,
colorId: 1,
start: {
dateTime: eventStartTime,
timeZone: 'America/Denver',
},
end: {
dateTime: eventEndTime,
timeZone: 'America/Denver',
},
}
完整的代码示例如下所示
// Require google from googleapis package.
const { google } = require('googleapis')
// Require oAuth2 from our google instance.
const { OAuth2 } = google.auth
// Create a new instance of oAuth and set our Client ID & Client Secret.
const oAuth2Client = new OAuth2(
'YOUR CLIENT ID GOES HERE',
'YOUR CLIENT SECRET GOES HERE'
)
// Call the setCredentials method on our oAuth2Client instance and set our refresh token.
oAuth2Client.setCredentials({
refresh_token: 'YOUR REFRESH TOKEN GOES HERE',
})
// Create a new calender instance.
const calendar = google.calendar({ version: 'v3', auth: oAuth2Client })
// Create a new event start date instance for temp uses in our calendar.
const eventStartTime = new Date()
eventStartTime.setDate(eventStartTime.getDay() + 2)
// Create a new event end date instance for temp uses in our calendar.
const eventEndTime = new Date()
eventEndTime.setDate(eventEndTime.getDay() + 4)
eventEndTime.setMinutes(eventEndTime.getMinutes() + 45)
// Create a dummy event for temp uses in our calendar
const event = {
summary: `Meeting with David`,
location: `3595 California St, San Francisco, CA 94118`,
description: `Meet with David to talk about the new client project and how to integrate the calendar for booking.`,
colorId: 1,
start: {
dateTime: eventStartTime,
timeZone: 'America/Denver',
},
end: {
dateTime: eventEndTime,
timeZone: 'America/Denver',
},
}
// Check if we a busy and have an event on our calendar for the same time.
calendar.freebusy.query(
{
resource: {
timeMin: eventStartTime,
timeMax: eventEndTime,
timeZone: 'America/Denver',
items: [{ id: 'primary' }],
},
},
(err, res) => {
// Check for errors in our query and log them if they exist.
if (err) return console.error('Free Busy Query Error: ', err)
// Create an array of all events on our calendar during that time.
const eventArr = res.data.calendars.primary.busy
// Check if event array is empty which means we are not busy
if (eventArr.length === 0)
// If we are not busy create a new calendar event.
return calendar.events.insert(
{ calendarId: 'primary', resource: event },
err => {
// Check for errors and log them if they exist.
if (err) return console.error('Error Creating Calender Event:', err)
// Else log that the event was created.
return console.log('Calendar event successfully created.')
}
)
// If event array is not empty log that we are busy.
return console.log(`Sorry I'm busy...`)
}
)
我想通了,想分享我的经验。
我将鼠标悬停在参数上,发现它叫做 calendar_v3.Schema$Event
然后我只是将其添加为类型,然后 vscode 建议为我导入它。
效果很好。只是希望类型定义得更强大一点(timeZone
类型 string
而不是有效字符串的联合类型)
为进入 calendar.events.insert({ calendarId: 'primary', requestBody: {...
requestBody
找到了这个 awesome code example
想知道是否可以得到requestBody
类型,所以可以这样写
const event: GoogleApiRequestBody = {
summary: `Meeting with David`,
location: `3595 California St, San Francisco, CA 94118`,
description: `Meet with David to talk about the new client project and how to integrate the calendar for booking.`,
colorId: 1,
start: {
dateTime: eventStartTime,
timeZone: 'America/Denver',
},
end: {
dateTime: eventEndTime,
timeZone: 'America/Denver',
},
}
完整的代码示例如下所示
// Require google from googleapis package.
const { google } = require('googleapis')
// Require oAuth2 from our google instance.
const { OAuth2 } = google.auth
// Create a new instance of oAuth and set our Client ID & Client Secret.
const oAuth2Client = new OAuth2(
'YOUR CLIENT ID GOES HERE',
'YOUR CLIENT SECRET GOES HERE'
)
// Call the setCredentials method on our oAuth2Client instance and set our refresh token.
oAuth2Client.setCredentials({
refresh_token: 'YOUR REFRESH TOKEN GOES HERE',
})
// Create a new calender instance.
const calendar = google.calendar({ version: 'v3', auth: oAuth2Client })
// Create a new event start date instance for temp uses in our calendar.
const eventStartTime = new Date()
eventStartTime.setDate(eventStartTime.getDay() + 2)
// Create a new event end date instance for temp uses in our calendar.
const eventEndTime = new Date()
eventEndTime.setDate(eventEndTime.getDay() + 4)
eventEndTime.setMinutes(eventEndTime.getMinutes() + 45)
// Create a dummy event for temp uses in our calendar
const event = {
summary: `Meeting with David`,
location: `3595 California St, San Francisco, CA 94118`,
description: `Meet with David to talk about the new client project and how to integrate the calendar for booking.`,
colorId: 1,
start: {
dateTime: eventStartTime,
timeZone: 'America/Denver',
},
end: {
dateTime: eventEndTime,
timeZone: 'America/Denver',
},
}
// Check if we a busy and have an event on our calendar for the same time.
calendar.freebusy.query(
{
resource: {
timeMin: eventStartTime,
timeMax: eventEndTime,
timeZone: 'America/Denver',
items: [{ id: 'primary' }],
},
},
(err, res) => {
// Check for errors in our query and log them if they exist.
if (err) return console.error('Free Busy Query Error: ', err)
// Create an array of all events on our calendar during that time.
const eventArr = res.data.calendars.primary.busy
// Check if event array is empty which means we are not busy
if (eventArr.length === 0)
// If we are not busy create a new calendar event.
return calendar.events.insert(
{ calendarId: 'primary', resource: event },
err => {
// Check for errors and log them if they exist.
if (err) return console.error('Error Creating Calender Event:', err)
// Else log that the event was created.
return console.log('Calendar event successfully created.')
}
)
// If event array is not empty log that we are busy.
return console.log(`Sorry I'm busy...`)
}
)
我想通了,想分享我的经验。
我将鼠标悬停在参数上,发现它叫做 calendar_v3.Schema$Event
然后我只是将其添加为类型,然后 vscode 建议为我导入它。
效果很好。只是希望类型定义得更强大一点(timeZone
类型 string
而不是有效字符串的联合类型)