/// /// /// /// /// declare namespace GoogleAppsScript { namespace Script { /** * An enumeration that identifies which categories of authorized services Apps Script is able to * execute through a triggered function. These values are exposed in triggered functions as the authMode * property of the event parameter, e. For * more information, see the guide to the * authorization lifecycle for add-ons. * * function onOpen(e) { * var menu = SpreadsheetApp.getUi().createAddonMenu(); * if (e && e.authMode == ScriptApp.AuthMode.NONE) { * // Add a normal menu item (works in all authorization modes). * menu.addItem('Start workflow', 'startWorkflow'); * } else { * // Add a menu item based on properties (doesn't work in AuthMode.NONE). * var properties = PropertiesService.getDocumentProperties(); * var workflowStarted = properties.getProperty('workflowStarted'); * if (workflowStarted) { * menu.addItem('Check workflow status', 'checkWorkflow'); * } else { * menu.addItem('Start workflow', 'startWorkflow'); * } * // Record analytics. * UrlFetchApp.fetch('http://www.example.com/analytics?event=open'); * } * menu.addToUi(); * } */ enum AuthMode { NONE, CUSTOM_FUNCTION, LIMITED, FULL, } /** * An object used to determine whether the user needs to authorize this script to use one or more * services, and to provide the URL for an authorization dialog. If the script is published as an add-on that uses installable triggers, this information can be used * to control access to sections of code for which the user lacks the necessary authorization. * Alternately, the add-on can ask the user to open the URL for the authorization dialog to resolve * the problem. * * This object is returned by ScriptApp.getAuthorizationInfo(authMode). In almost * all cases, scripts should call ScriptApp.getAuthorizationInfo(ScriptApp.AuthMode.FULL), * since no other authorization mode requires that users grant authorization. */ interface AuthorizationInfo { getAuthorizationStatus(): AuthorizationStatus; getAuthorizationUrl(): string; } /** * An enumeration denoting the authorization status of a script. */ enum AuthorizationStatus { REQUIRED, NOT_REQUIRED, } /** * Builder for calendar triggers. */ interface CalendarTriggerBuilder { create(): Trigger; onEventUpdated(): CalendarTriggerBuilder; } /** * A builder for clock triggers. */ interface ClockTriggerBuilder { after(durationMilliseconds: Integer): ClockTriggerBuilder; at(date: Base.Date): ClockTriggerBuilder; atDate(year: Integer, month: Integer, day: Integer): ClockTriggerBuilder; atHour(hour: Integer): ClockTriggerBuilder; create(): Trigger; everyDays(n: Integer): ClockTriggerBuilder; everyHours(n: Integer): ClockTriggerBuilder; everyMinutes(n: Integer): ClockTriggerBuilder; everyWeeks(n: Integer): ClockTriggerBuilder; inTimezone(timezone: string): ClockTriggerBuilder; nearMinute(minute: Integer): ClockTriggerBuilder; onMonthDay(day: Integer): ClockTriggerBuilder; onWeekDay(day: Base.Weekday): ClockTriggerBuilder; } /** * A builder for document triggers. */ interface DocumentTriggerBuilder { create(): Trigger; onOpen(): DocumentTriggerBuilder; } /** * An enumeration denoting the type of triggered event. */ enum EventType { CLOCK, ON_OPEN, ON_EDIT, ON_FORM_SUBMIT, ON_CHANGE, ON_EVENT_UPDATED, } /** * A builder for form triggers. */ interface FormTriggerBuilder { create(): Trigger; onFormSubmit(): FormTriggerBuilder; onOpen(): FormTriggerBuilder; } /** * An enumeration that indicates how the script came to be installed as an add-on for the current * user. */ enum InstallationSource { APPS_MARKETPLACE_DOMAIN_ADD_ON, NONE, WEB_STORE_ADD_ON, } /** * Access and manipulate script publishing and triggers. This class allows users to create script * triggers and control publishing the script as a service. */ interface ScriptApp { AuthMode: typeof AuthMode; AuthorizationStatus: typeof AuthorizationStatus; EventType: typeof EventType; InstallationSource: typeof InstallationSource; TriggerSource: typeof TriggerSource; WeekDay: typeof Base.Weekday; deleteTrigger(trigger: Trigger): void; getAuthorizationInfo(authMode: AuthMode): AuthorizationInfo; getIdentityToken(): string; getInstallationSource(): InstallationSource; getOAuthToken(): string; getProjectTriggers(): Trigger[]; getScriptId(): string; getService(): Service; getUserTriggers(document: Document.Document): Trigger[]; getUserTriggers(form: Forms.Form): Trigger[]; getUserTriggers(spreadsheet: Spreadsheet.Spreadsheet): Trigger[]; invalidateAuth(): void; newStateToken(): StateTokenBuilder; newTrigger(functionName: string): TriggerBuilder; /** @deprecated DO NOT USE */ getProjectKey(): string; /** @deprecated DO NOT USE */ getScriptTriggers(): Trigger[]; } /** * Access and manipulate script publishing. */ interface Service { getUrl(): string; isEnabled(): boolean; /** @deprecated DO NOT USE */ disable(): void; } /** * Builder for spreadsheet triggers. */ interface SpreadsheetTriggerBuilder { create(): Trigger; onChange(): SpreadsheetTriggerBuilder; onEdit(): SpreadsheetTriggerBuilder; onFormSubmit(): SpreadsheetTriggerBuilder; onOpen(): SpreadsheetTriggerBuilder; } /** * Allows scripts to create state tokens that can be used in callback APIs (like OAuth flows). * * // Reusable function to generate a callback URL, assuming the script has been published as a * // web app (necessary to obtain the URL programmatically). If the script has not been published * // as a web app, set `var url` in the first line to the URL of your script project (which * // cannot be obtained programmatically). * function getCallbackURL(callbackFunction){ * var url = ScriptApp.getService().getUrl(); // Ends in /exec (for a web app) * url = url.slice(0, -4) + 'usercallback?state='; // Change /exec to /usercallback * var stateToken = ScriptApp.newStateToken() * .withMethod(callbackFunction) * .withTimeout(120) * .createToken(); * return url + stateToken; * } */ interface StateTokenBuilder { createToken(): string; withArgument(name: string, value: string): StateTokenBuilder; withMethod(method: string): StateTokenBuilder; withTimeout(seconds: Integer): StateTokenBuilder; } /** * A script trigger. */ interface Trigger { getEventType(): EventType; getHandlerFunction(): string; getTriggerSource(): TriggerSource; getTriggerSourceId(): string; getUniqueId(): string; } /** * A generic builder for script triggers. */ interface TriggerBuilder { forDocument(document: Document.Document): DocumentTriggerBuilder; forDocument(key: string): DocumentTriggerBuilder; forForm(form: Forms.Form): FormTriggerBuilder; forForm(key: string): FormTriggerBuilder; forSpreadsheet(sheet: Spreadsheet.Spreadsheet): SpreadsheetTriggerBuilder; forSpreadsheet(key: string): SpreadsheetTriggerBuilder; forUserCalendar(emailId: string): CalendarTriggerBuilder; timeBased(): ClockTriggerBuilder; } /** * An enumeration denoting the source of the event that causes the trigger to fire. */ enum TriggerSource { SPREADSHEETS, CLOCK, FORMS, DOCUMENTS, CALENDAR, } } } declare var ScriptApp: GoogleAppsScript.Script.ScriptApp;