actions/list-events/list-events.mjs
import googleCalendar from "../../google_calendar.app.mjs"; import utils from "../../common/utils.mjs"; import { ConfigurationError } from "@pipedream/platform"; export default { key: "google_calendar-list-events", name: "List Events", description: "Retrieve a list of event from the Google Calendar. [See the documentation](https://developers.google.com/calendar/api/v3/reference/events/list)", version: "0.0.9", annotations: { destructiveHint: false, openWorldHint: true, readOnlyHint: true, }, type: "action", props: { googleCalendar, calendarId: { propDefinition: [ googleCalendar, "calendarId", ], }, iCalUID: { propDefinition: [ googleCalendar, "iCalUID", ], }, maxAttendees: { propDefinition: [ googleCalendar, "maxAttendees", ], }, maxResults: { propDefinition: [ googleCalendar, "maxResults", ], }, orderBy: { propDefinition: [ googleCalendar, "orderBy", ], default: "", }, privateExtendedProperty: { propDefinition: [ googleCalendar, "privateExtendedProperty", ], }, q: { propDefinition: [ googleCalendar, "q", ], }, sharedExtendedProperty: { propDefinition: [ googleCalendar, "sharedExtendedProperty", ], }, showDeleted: { propDefinition: [ googleCalendar, "showDeleted", ], }, showHiddenInvitations: { propDefinition: [ googleCalendar, "showHiddenInvitations", ], }, singleEvents: { propDefinition: [ googleCalendar, "singleEvents", ], }, timeMax: { propDefinition: [ googleCalendar, "timeMax", ], }, timeMin: { propDefinition: [ googleCalendar, "timeMin", ], }, timeZone: { propDefinition: [ googleCalendar, "timeZone", ], }, updatedMin: { propDefinition: [ googleCalendar, "updatedMin", ], }, eventTypes: { propDefinition: [ googleCalendar, "eventTypes", ], }, }, async run({ $ }) { if (this.orderBy === "startTime" && !this.singleEvents) { throw new ConfigurationError("Single Events must be `true` to order by `startTime`"); } const args = utils.filterEmptyValues({ calendarId: this.calendarId, iCalUID: this.iCalUID, maxAttendees: this.maxAttendees, orderBy: this.orderBy || undefined, privateExtendedProperty: this.privateExtendedProperty, q: this.q, sharedExtendedProperty: this.sharedExtendedProperty, showDeleted: this.showDeleted, showHiddenInvitations: this.showHiddenInvitations, singleEvents: this.singleEvents, timeMax: this.timeMax, timeMin: this.timeMin, timeZone: this.timeZone, updatedMin: this.updatedMin, eventTypes: this.eventTypes, }); const events = []; do { const { items, nextPageToken, } = await this.googleCalendar.listEvents(args); events.push(...items); args.pageToken = nextPageToken; } while (args.pageToken && (!this.maxResults || events.length < this.maxResults)); if (events.length > this.maxResults) { events.length = this.maxResults; } $.export("$summary", `Successfully retrieved ${events.length} event${events.length === 1 ? "" : "s"}`); return events; }, };