/// /// /// declare namespace GoogleAppsScript { /** * Google Apps Script Events * @see https://developers.google.com/apps-script/guides/triggers/events */ namespace Events { // Internal interfaces interface AppsScriptEvent { authMode: Script.AuthMode; triggerUid: string; user: Base.User; } interface AppsScriptHttpRequestEvent { parameter: { [key: string]: string }; pathInfo: string; contextPath: string; contentLength: number; queryString: string; parameters: { [key: string]: string[] }; } interface AppsScriptHttpRequestEventPostData { length: number; type: string; contents: string; name: string; } // External interfaces interface SheetsOnOpen extends AppsScriptEvent { source: Spreadsheet.Spreadsheet; } type SheetsOnChangeChangeType = | "EDIT" | "INSERT_ROW" | "INSERT_COLUMN" | "REMOVE_ROW" | "REMOVE_COLUMN" | "INSERT_GRID" | "REMOVE_GRID" | "FORMAT" | "OTHER"; interface SheetsOnChange extends AppsScriptEvent { changeType: SheetsOnChangeChangeType; source: Spreadsheet.Spreadsheet; } interface SheetsOnEdit extends AppsScriptEvent { oldValue: string; range: Spreadsheet.Range; source: Spreadsheet.Spreadsheet; value: string; } interface SheetsOnFormSubmit extends AppsScriptEvent { namedValues: { [key: string]: string[] }; range: Spreadsheet.Range; values: string[]; } interface FormsOnFormSubmit extends AppsScriptEvent { response: Forms.FormResponse; source: Forms.Form; } interface DocsOnOpen extends AppsScriptEvent { source: Document.Document; } interface SlidesOnOpen extends AppsScriptEvent { source: Slides.Presentation; } interface FormsOnOpen extends AppsScriptEvent { source: Forms.Form; } // TODO: Is there a `user` attribute? interface CalendarEventUpdated extends AppsScriptEvent { calendarId: string; } interface AddonOnInstall { authMode: Script.AuthMode; } // eslint-disable-next-line @typescript-eslint/no-empty-interface interface DoGet extends AppsScriptHttpRequestEvent { } interface DoPost extends AppsScriptHttpRequestEvent { postData: AppsScriptHttpRequestEventPostData; } interface TimeDriven { authMode: Script.AuthMode; year: number; month: number; "week-of-year": number; "day-of-month": number; "day-of-week": number; hour: number; minute: number; second: number; timezone: string; triggerUid: string; } } }