motemen
2015-11-12 01:16:20 +09:00
parent 30387ec3dd
commit 50858e11bf
29 changed files with 11924 additions and 0 deletions
+13
View File
@@ -0,0 +1,13 @@
License Notices:
The API definitions and documents are from Google Apps Script reference site [1].
The document comments are reproduced from work created and shared by Google [2]
and used according to terms described in the Creative Commons 3.0 Attribution License [3].
The code samples in the documents and the test code are licensed under the Apache 2.0 License [4].
[1] https://developers.google.com/apps-script/
[2] https://developers.google.com/readme/policies/
[3] http://creativecommons.org/licenses/by/3.0/
[4] http://www.apache.org/licenses/LICENSE-2.0
@@ -0,0 +1,27 @@
/// <reference path="google-apps-script.document.d.ts" />
/// <reference path="google-apps-script.gmail.d.ts" />
// from https://developers.google.com/apps-script/overview
function createAndSendDocument() {
// Create a new Google Doc named 'Hello, world!'
var doc = DocumentApp.create('Hello, world!');
// Access the body of the document, then add a paragraph.
doc.getBody().appendParagraph('This document was created by Google Apps Script.');
// Get the URL of the document.
var url = doc.getUrl();
// Get the email address of the active user - that's you.
var email = Session.getActiveUser().getEmail();
// Get the name of the document to use as an email subject line.
var subject = doc.getName();
// Append a new string to the "url" variable to use as an email body.
var body = 'Link to your doc: ' + url;
// Send yourself an email with a link to the document.
GmailApp.sendEmail(email, subject, body);
}
+278
View File
@@ -0,0 +1,278 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module Base {
/**
* A data interchange object for Apps Script services.
*/
export interface Blob {
copyBlob(): Blob;
getAs(contentType: string): Blob;
getBytes(): Byte[];
getContentType(): string;
getDataAsString(): string;
getDataAsString(charset: string): string;
getName(): string;
isGoogleType(): boolean;
setBytes(data: Byte[]): Blob;
setContentType(contentType: string): Blob;
setContentTypeFromExtension(): Blob;
setDataFromString(string: string): Blob;
setDataFromString(string: string, charset: string): Blob;
setName(name: string): Blob;
getAllBlobs(): Blob[];
}
/**
* Interface for objects that can export their data as a Blob.
* Implementing classes
*
* NameBrief description
*
* AttachmentA Sites Attachment such as a file attached to a page.
*
* BlobA data interchange object for Apps Script services.
*
* ChartA Chart object, which can be embedded into documents, UI elements, or used as a static image.
*
* DocumentA document, containing rich text and elements such as tables and lists.
*
* EmbeddedChartRepresents a chart that has been embedded into a Spreadsheet.
*
* FileA file in Google Drive.
*
* GmailAttachmentAn attachment from Gmail.
*
* HTTPResponseThis class allows users to access specific information on HTTP responses.
*
* HtmlOutputAn HtmlOutput object that can be served from a script.
*
* InlineImageAn element representing an embedded image.
*
* JdbcBlobA JDBC Blob.
*
* JdbcClobA JDBC Clob.
*
* SpreadsheetThis class allows users to access and modify Google Sheets files.
*
* StaticMapAllows for the creation and decoration of static map images.
*/
export interface BlobSource {
getAs(contentType: string): Blob;
getBlob(): Blob;
}
/**
* This class provides access to Google Apps specific dialog boxes.
*
* The methods in this class are only available for use in the context of a Google Spreadsheet.
* See also
*
* ButtonSet
*/
export interface Browser {
Buttons: ButtonSet
inputBox(prompt: string): string;
inputBox(prompt: string, buttons: ButtonSet): string;
inputBox(title: string, prompt: string, buttons: ButtonSet): string;
msgBox(prompt: string): string;
msgBox(prompt: string, buttons: ButtonSet): string;
msgBox(title: string, prompt: string, buttons: ButtonSet): string;
}
/**
* An enum representing predetermined, localized dialog buttons returned by an
* alert or PromptResponse.getSelectedButton() to
* indicate which button in a dialog the user clicked. These values cannot be set; to add buttons to
* an alert or
* prompt, use ButtonSet instead.
*
* // Display a dialog box with a message and "Yes" and "No" buttons.
* var ui = DocumentApp.getUi();
* var response = ui.alert('Are you sure you want to continue?', ui.ButtonSet.YES_NO);
*
* // Process the user's response.
* if (response == ui.Button.YES) {
* Logger.log('The user clicked "Yes."');
* } else {
* Logger.log('The user clicked "No" or the dialog\'s close button.');
* }
*/
export enum Button { CLOSE, OK, CANCEL, YES, NO }
/**
* An enum representing predetermined, localized sets of one or more dialog buttons that can be
* added to an alert or a
* prompt. To determine which button the user
* clicked, use Button.
*
* // Display a dialog box with a message and "Yes" and "No" buttons.
* var ui = DocumentApp.getUi();
* var response = ui.alert('Are you sure you want to continue?', ui.ButtonSet.YES_NO);
*
* // Process the user's response.
* if (response == ui.Button.YES) {
* Logger.log('The user clicked "Yes."');
* } else {
* Logger.log('The user clicked "No" or the dialog\'s close button.');
* }
*/
export enum ButtonSet { OK, OK_CANCEL, YES_NO, YES_NO_CANCEL }
/**
* This class allows the developer to write out text to the debugging logs.
*/
export interface Logger {
clear(): void;
getLog(): string;
log(data: Object): Logger;
log(format: string, ...values: Object[]): Logger;
}
/**
* A custom menu in an instance of the user interface for a Google App. A script can only interact
* with the UI for the current instance of an open document or form, and only if the script is
* container-bound to the document or form. For more
* information, see the guide to menus.
*
* // Add a custom menu to the active spreadsheet, including a separator and a sub-menu.
* function onOpen(e) {
* SpreadsheetApp.getUi()
* .createMenu('My Menu')
* .addItem('My Menu Item', 'myFunction')
* .addSeparator()
* .addSubMenu(SpreadsheetApp.getUi().createMenu('My Submenu')
* .addItem('One Submenu Item', 'mySecondFunction')
* .addItem('Another Submenu Item', 'myThirdFunction'))
* .addToUi();
* }
*/
export interface Menu {
addItem(caption: string, functionName: string): Menu;
addSeparator(): Menu;
addSubMenu(menu: Menu): Menu;
addToUi(): void;
}
/**
* An enumeration that provides access to MIME-type declarations without typing the strings
* explicitly. Any method that expects a MIME type rendered as a string (for example,
* 'image/png') will also accept one of the values below, so long as the method
* supports the underlying MIME type.
*
* // Use MimeType enum to log the name of every Google Doc in the user's Drive.
* var docs = DriveApp.getFilesByType(MimeType.GOOGLE_DOCS);
* while (docs.hasNext()) {
* var doc = docs.next();
* Logger.log(doc.getName())
* }
*
* // Use plain string to log the size of every PNG in the user's Drive.
* var pngs = DriveApp.getFilesByType('image/png');
* while (pngs.hasNext()) {
* var png = pngs.next();
* Logger.log(png.getSize());
* }
*/
export enum MimeType { GOOGLE_APPS_SCRIPT, GOOGLE_DRAWINGS, GOOGLE_DOCS, GOOGLE_FORMS, GOOGLE_SHEETS, GOOGLE_SLIDES, FOLDER, BMP, GIF, JPEG, PNG, SVG, PDF, CSS, CSV, HTML, JAVASCRIPT, PLAIN_TEXT, RTF, OPENDOCUMENT_GRAPHICS, OPENDOCUMENT_PRESENTATION, OPENDOCUMENT_SPREADSHEET, OPENDOCUMENT_TEXT, MICROSOFT_EXCEL, MICROSOFT_EXCEL_LEGACY, MICROSOFT_POWERPOINT, MICROSOFT_POWERPOINT_LEGACY, MICROSOFT_WORD, MICROSOFT_WORD_LEGACY, ZIP }
/**
* An enum representing the months of the year.
*/
export enum Month { JANUARY, FEBRUARY, MARCH, APRIL, MAY, JUNE, JULY, AUGUST, SEPTEMBER, OCTOBER, NOVEMBER, DECEMBER }
/**
* A response to a prompt dialog displayed in the
* user-interface environment for a Google App. The response contains any text the user entered in
* the dialog's input field and indicates which button the user clicked to dismiss the dialog.
*
* // Display a dialog box with a title, message, input field, and "Yes" and "No" buttons. The
* // user can also close the dialog by clicking the close button in its title bar.
* var ui = DocumentApp.getUi();
* var response = ui.prompt('Getting to know you', 'May I know your name?', ui.ButtonSet.YES_NO);
*
* // Process the user's response.
* if (response.getSelectedButton() == ui.Button.YES) {
* Logger.log('The user\'s name is %s.', response.getResponseText());
* } else if (response.getSelectedButton() == ui.Button.NO) {
* Logger.log('The user didn\'t want to provide a name.');
* } else {
* Logger.log('The user clicked the close button in the dialog\'s title bar.');
* }
*/
export interface PromptResponse {
getResponseText(): string;
getSelectedButton(): Button;
}
/**
* The Session class provides access to session information, such as the user's email address (in
* some circumstances) and language setting.
*/
export interface Session {
getActiveUser(): User;
getActiveUserLocale(): string;
getEffectiveUser(): User;
getScriptTimeZone(): string;
getTimeZone(): string;
getUser(): User;
}
/**
* An instance of the user-interface environment for a Google App that allows the script to add
* features like menus, dialogs, and sidebars. A script can only interact with the UI for the
* current instance of an open editor, and only if the script is
* container-bound to the editor.
*
* // Display a dialog box with a title, message, input field, and "Yes" and "No" buttons. The
* // user can also close the dialog by clicking the close button in its title bar.
* var ui = SpreadsheetApp.getUi();
* var response = ui.prompt('Getting to know you', 'May I know your name?', ui.ButtonSet.YES_NO);
*
* // Process the user's response.
* if (response.getSelectedButton() == ui.Button.YES) {
* Logger.log('The user\'s name is %s.', response.getResponseText());
* } else if (response.getSelectedButton() == ui.Button.NO) {
* Logger.log('The user didn\'t want to provide a name.');
* } else {
* Logger.log('The user clicked the close button in the dialog\'s title bar.');
* }
*/
export interface Ui {
Button: Button
ButtonSet: ButtonSet
alert(prompt: string): Button;
alert(prompt: string, buttons: ButtonSet): Button;
alert(title: string, prompt: string, buttons: ButtonSet): Button;
createAddonMenu(): Menu;
createMenu(caption: string): Menu;
prompt(prompt: string): PromptResponse;
prompt(prompt: string, buttons: ButtonSet): PromptResponse;
prompt(title: string, prompt: string, buttons: ButtonSet): PromptResponse;
showModalDialog(userInterface: Object, title: string): void;
showModelessDialog(userInterface: Object, title: string): void;
showSidebar(userInterface: Object): void;
showDialog(userInterface: Object): void;
}
/**
* Representation of a user, suitable for scripting.
*/
export interface User {
getEmail(): string;
getUserLoginId(): string;
}
/**
* An enum representing the days of the week.
*/
export enum Weekday { SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY }
}
}
declare var Browser: GoogleAppsScript.Base.Browser;
declare var Logger: GoogleAppsScript.Base.Logger;
// conflicts with MimeType in lib.d.ts
// declare var MimeType: GoogleAppsScript.Base.MimeType;
declare var Session: GoogleAppsScript.Base.Session;
+52
View File
@@ -0,0 +1,52 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module Cache {
/**
* A reference to a particular cache.
*
* This class allows you to insert, retrieve, and remove items from a cache. This can be
* particularly useful when you want frequent access to an expensive or slow resource. For
* example, say you have an RSS feed at example.com that takes 20 seconds to fetch, but you want
* to speed up access on an average request.
*
* function getRssFeed() {
* var cache = CacheService.getPublicCache();
* var cached = cache.get("rss-feed-contents");
* if (cached != null) {
* return cached;
* }
* var result = UrlFetchApp.fetch("http://example.com/my-slow-rss-feed.xml"); // takes 20 seconds
* var contents = result.getContentText();
* cache.put("rss-feed-contents", contents, 1500); // cache for 25 minutes
* return contents;
* }
*/
export interface Cache {
get(key: string): string;
getAll(keys: String[]): Object;
put(key: string, value: string): void;
put(key: string, value: string, expirationInSeconds: Integer): void;
putAll(values: Object): void;
putAll(values: Object, expirationInSeconds: Integer): void;
remove(key: string): void;
removeAll(keys: String[]): void;
}
/**
* CacheService allows you to access a cache for short term storage of data.
*
* This class lets you get a specific cache instance. Public caches are for things that are not
* dependent on which user is accessing your script. Private caches are for things which are
* user-specific, like settings or recent activity.
*/
export interface CacheService {
getDocumentCache(): Cache;
getScriptCache(): Cache;
getUserCache(): Cache;
}
}
}
declare var CacheService: GoogleAppsScript.Cache.CacheService;
+289
View File
@@ -0,0 +1,289 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Calendar {
/**
* Represents a calendar that the user owns or is subscribed to.
*/
export interface Calendar {
createAllDayEvent(title: string, date: Date): CalendarEvent;
createAllDayEvent(title: string, date: Date, options: Object): CalendarEvent;
createAllDayEventSeries(title: string, startDate: Date, recurrence: EventRecurrence): CalendarEventSeries;
createAllDayEventSeries(title: string, startDate: Date, recurrence: EventRecurrence, options: Object): CalendarEventSeries;
createEvent(title: string, startTime: Date, endTime: Date): CalendarEvent;
createEvent(title: string, startTime: Date, endTime: Date, options: Object): CalendarEvent;
createEventFromDescription(description: string): CalendarEvent;
createEventSeries(title: string, startTime: Date, endTime: Date, recurrence: EventRecurrence): CalendarEventSeries;
createEventSeries(title: string, startTime: Date, endTime: Date, recurrence: EventRecurrence, options: Object): CalendarEventSeries;
deleteCalendar(): void;
getColor(): string;
getDescription(): string;
getEventSeriesById(iCalId: string): CalendarEventSeries;
getEvents(startTime: Date, endTime: Date): CalendarEvent[];
getEvents(startTime: Date, endTime: Date, options: Object): CalendarEvent[];
getEventsForDay(date: Date): CalendarEvent[];
getEventsForDay(date: Date, options: Object): CalendarEvent[];
getId(): string;
getName(): string;
getTimeZone(): string;
isHidden(): boolean;
isMyPrimaryCalendar(): boolean;
isOwnedByMe(): boolean;
isSelected(): boolean;
setColor(color: string): Calendar;
setDescription(description: string): Calendar;
setHidden(hidden: boolean): Calendar;
setName(name: string): Calendar;
setSelected(selected: boolean): Calendar;
setTimeZone(timeZone: string): Calendar;
unsubscribeFromCalendar(): void;
}
/**
* Allows a script to read and update the user's Google Calendar. This class provides direct
* access to the user's default calendar, as well as the ability to retrieve additional calendars
* that the user owns or is subscribed to.
*/
export interface CalendarApp {
Color: Color
GuestStatus: GuestStatus
Month: Base.Month
Visibility: Visibility
Weekday: Base.Weekday
createAllDayEvent(title: string, date: Date): CalendarEvent;
createAllDayEvent(title: string, date: Date, options: Object): CalendarEvent;
createAllDayEventSeries(title: string, startDate: Date, recurrence: EventRecurrence): CalendarEventSeries;
createAllDayEventSeries(title: string, startDate: Date, recurrence: EventRecurrence, options: Object): CalendarEventSeries;
createCalendar(name: string): Calendar;
createCalendar(name: string, options: Object): Calendar;
createEvent(title: string, startTime: Date, endTime: Date): CalendarEvent;
createEvent(title: string, startTime: Date, endTime: Date, options: Object): CalendarEvent;
createEventFromDescription(description: string): CalendarEvent;
createEventSeries(title: string, startTime: Date, endTime: Date, recurrence: EventRecurrence): CalendarEventSeries;
createEventSeries(title: string, startTime: Date, endTime: Date, recurrence: EventRecurrence, options: Object): CalendarEventSeries;
getAllCalendars(): Calendar[];
getAllOwnedCalendars(): Calendar[];
getCalendarById(id: string): Calendar;
getCalendarsByName(name: string): Calendar[];
getColor(): string;
getDefaultCalendar(): Calendar;
getDescription(): string;
getEventSeriesById(iCalId: string): CalendarEventSeries;
getEvents(startTime: Date, endTime: Date): CalendarEvent[];
getEvents(startTime: Date, endTime: Date, options: Object): CalendarEvent[];
getEventsForDay(date: Date): CalendarEvent[];
getEventsForDay(date: Date, options: Object): CalendarEvent[];
getId(): string;
getName(): string;
getOwnedCalendarById(id: string): Calendar;
getOwnedCalendarsByName(name: string): Calendar[];
getTimeZone(): string;
isHidden(): boolean;
isMyPrimaryCalendar(): boolean;
isOwnedByMe(): boolean;
isSelected(): boolean;
newRecurrence(): EventRecurrence;
setColor(color: string): Calendar;
setDescription(description: string): Calendar;
setHidden(hidden: boolean): Calendar;
setName(name: string): Calendar;
setSelected(selected: boolean): Calendar;
setTimeZone(timeZone: string): Calendar;
subscribeToCalendar(id: string): Calendar;
subscribeToCalendar(id: string, options: Object): Calendar;
}
/**
* Represents a single calendar event.
*/
export interface CalendarEvent {
addEmailReminder(minutesBefore: Integer): CalendarEvent;
addGuest(email: string): CalendarEvent;
addPopupReminder(minutesBefore: Integer): CalendarEvent;
addSmsReminder(minutesBefore: Integer): CalendarEvent;
anyoneCanAddSelf(): boolean;
deleteEvent(): void;
deleteTag(key: string): CalendarEvent;
getAllDayEndDate(): Date;
getAllDayStartDate(): Date;
getAllTagKeys(): String[];
getCreators(): String[];
getDateCreated(): Date;
getDescription(): string;
getEmailReminders(): Integer[];
getEndTime(): Date;
getEventSeries(): CalendarEventSeries;
getGuestByEmail(email: string): EventGuest;
getGuestList(): EventGuest[];
getGuestList(includeOwner: boolean): EventGuest[];
getId(): string;
getLastUpdated(): Date;
getLocation(): string;
getMyStatus(): GuestStatus;
getOriginalCalendarId(): string;
getPopupReminders(): Integer[];
getSmsReminders(): Integer[];
getStartTime(): Date;
getTag(key: string): string;
getTitle(): string;
getVisibility(): Visibility;
guestsCanInviteOthers(): boolean;
guestsCanModify(): boolean;
guestsCanSeeGuests(): boolean;
isAllDayEvent(): boolean;
isOwnedByMe(): boolean;
isRecurringEvent(): boolean;
removeAllReminders(): CalendarEvent;
removeGuest(email: string): CalendarEvent;
resetRemindersToDefault(): CalendarEvent;
setAllDayDate(date: Date): CalendarEvent;
setAnyoneCanAddSelf(anyoneCanAddSelf: boolean): CalendarEvent;
setDescription(description: string): CalendarEvent;
setGuestsCanInviteOthers(guestsCanInviteOthers: boolean): CalendarEvent;
setGuestsCanModify(guestsCanModify: boolean): CalendarEvent;
setGuestsCanSeeGuests(guestsCanSeeGuests: boolean): CalendarEvent;
setLocation(location: string): CalendarEvent;
setMyStatus(status: GuestStatus): CalendarEvent;
setTag(key: string, value: string): CalendarEvent;
setTime(startTime: Date, endTime: Date): CalendarEvent;
setTitle(title: string): CalendarEvent;
setVisibility(visibility: Visibility): CalendarEvent;
}
/**
* Represents a series of events (a recurring event).
*/
export interface CalendarEventSeries {
addEmailReminder(minutesBefore: Integer): CalendarEventSeries;
addGuest(email: string): CalendarEventSeries;
addPopupReminder(minutesBefore: Integer): CalendarEventSeries;
addSmsReminder(minutesBefore: Integer): CalendarEventSeries;
anyoneCanAddSelf(): boolean;
deleteEventSeries(): void;
deleteTag(key: string): CalendarEventSeries;
getAllTagKeys(): String[];
getCreators(): String[];
getDateCreated(): Date;
getDescription(): string;
getEmailReminders(): Integer[];
getGuestByEmail(email: string): EventGuest;
getGuestList(): EventGuest[];
getGuestList(includeOwner: boolean): EventGuest[];
getId(): string;
getLastUpdated(): Date;
getLocation(): string;
getMyStatus(): GuestStatus;
getOriginalCalendarId(): string;
getPopupReminders(): Integer[];
getSmsReminders(): Integer[];
getTag(key: string): string;
getTitle(): string;
getVisibility(): Visibility;
guestsCanInviteOthers(): boolean;
guestsCanModify(): boolean;
guestsCanSeeGuests(): boolean;
isOwnedByMe(): boolean;
removeAllReminders(): CalendarEventSeries;
removeGuest(email: string): CalendarEventSeries;
resetRemindersToDefault(): CalendarEventSeries;
setAnyoneCanAddSelf(anyoneCanAddSelf: boolean): CalendarEventSeries;
setDescription(description: string): CalendarEventSeries;
setGuestsCanInviteOthers(guestsCanInviteOthers: boolean): CalendarEventSeries;
setGuestsCanModify(guestsCanModify: boolean): CalendarEventSeries;
setGuestsCanSeeGuests(guestsCanSeeGuests: boolean): CalendarEventSeries;
setLocation(location: string): CalendarEventSeries;
setMyStatus(status: GuestStatus): CalendarEventSeries;
setRecurrence(recurrence: EventRecurrence, startDate: Date): CalendarEventSeries;
setRecurrence(recurrence: EventRecurrence, startTime: Date, endTime: Date): CalendarEventSeries;
setTag(key: string, value: string): CalendarEventSeries;
setTitle(title: string): CalendarEventSeries;
setVisibility(visibility: Visibility): CalendarEventSeries;
}
/**
* An enum representing the named colors available in the Calendar service.
*/
export enum Color { BLUE, BROWN, CHARCOAL, CHESTNUT, GRAY, GREEN, INDIGO, LIME, MUSTARD, OLIVE, ORANGE, PINK, PLUM, PURPLE, RED, RED_ORANGE, SEA_BLUE, SLATE, TEAL, TURQOISE, YELLOW }
/**
* Represents a guest of an event.
*/
export interface EventGuest {
getAdditionalGuests(): Integer;
getEmail(): string;
getGuestStatus(): GuestStatus;
getName(): string;
getStatus(): string;
}
/**
* Represents the recurrence settings for an event series.
*/
export interface EventRecurrence {
addDailyExclusion(): RecurrenceRule;
addDailyRule(): RecurrenceRule;
addDate(date: Date): EventRecurrence;
addDateExclusion(date: Date): EventRecurrence;
addMonthlyExclusion(): RecurrenceRule;
addMonthlyRule(): RecurrenceRule;
addWeeklyExclusion(): RecurrenceRule;
addWeeklyRule(): RecurrenceRule;
addYearlyExclusion(): RecurrenceRule;
addYearlyRule(): RecurrenceRule;
setTimeZone(timeZone: string): EventRecurrence;
}
/**
* An enum representing the statuses a guest can have for an event.
*/
export enum GuestStatus { INVITED, MAYBE, NO, OWNER, YES }
/**
* Represents a recurrence rule for an event series.
*
* Note that this class also behaves like the EventRecurrence that it belongs
* to, allowing you to chain rule creation together like so:
*
* recurrence.addDailyRule().times(3).interval(2).addWeeklyExclusion().times(2);
*
* times(times)
* interval(interval)
*/
export interface RecurrenceRule {
addDailyExclusion(): RecurrenceRule;
addDailyRule(): RecurrenceRule;
addDate(date: Date): EventRecurrence;
addDateExclusion(date: Date): EventRecurrence;
addMonthlyExclusion(): RecurrenceRule;
addMonthlyRule(): RecurrenceRule;
addWeeklyExclusion(): RecurrenceRule;
addWeeklyRule(): RecurrenceRule;
addYearlyExclusion(): RecurrenceRule;
addYearlyRule(): RecurrenceRule;
interval(interval: Integer): RecurrenceRule;
onlyInMonth(month: Base.Month): RecurrenceRule;
onlyInMonths(months: Base.Month[]): RecurrenceRule;
onlyOnMonthDay(day: Integer): RecurrenceRule;
onlyOnMonthDays(days: Integer[]): RecurrenceRule;
onlyOnWeek(week: Integer): RecurrenceRule;
onlyOnWeekday(day: Base.Weekday): RecurrenceRule;
onlyOnWeekdays(days: Base.Weekday[]): RecurrenceRule;
onlyOnWeeks(weeks: Integer[]): RecurrenceRule;
onlyOnYearDay(day: Integer): RecurrenceRule;
onlyOnYearDays(days: Integer[]): RecurrenceRule;
setTimeZone(timeZone: string): EventRecurrence;
times(times: Integer): RecurrenceRule;
until(endDate: Date): RecurrenceRule;
weekStartsOn(day: Base.Weekday): RecurrenceRule;
}
/**
* An enum representing the visibility of an event.
*/
export enum Visibility { CONFIDENTIAL, DEFAULT, PRIVATE, PUBLIC }
}
}
declare var CalendarApp: GoogleAppsScript.Calendar.CalendarApp;
+970
View File
@@ -0,0 +1,970 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
/// <reference path="google-apps-script.ui.d.ts" />
declare module GoogleAppsScript {
export module Charts {
/**
* Builder for area charts. For more details, see the
* Google Charts documentation.
*
* Here is an example that shows how to build an area chart.
*
* function doGet() {
* // Create a data table with some sample data.
* var sampleData = Charts.newDataTable()
* .addColumn(Charts.ColumnType.STRING, "Month")
* .addColumn(Charts.ColumnType.NUMBER, "Dining")
* .addColumn(Charts.ColumnType.NUMBER, "Total")
* .addRow(["Jan", 60, 520])
* .addRow(["Feb", 50, 430])
* .addRow(["Mar", 53, 440])
* .addRow(["Apr", 70, 410])
* .addRow(["May", 80, 390])
* .addRow(["Jun", 60, 500])
* .addRow(["Jul", 100, 450])
* .addRow(["Aug", 140, 431])
* .addRow(["Sep", 75, 488])
* .addRow(["Oct", 70, 521])
* .addRow(["Nov", 58, 388])
* .addRow(["Dec", 63, 400])
* .build();
*
* var chart = Charts.newAreaChart()
* .setTitle('Yearly Spending')
* .setXAxisTitle('Month')
* .setYAxisTitle('Spending (USD)')
* .setDimensions(600, 500)
* .setStacked()
* .setColors(['red', 'green'])
* .setDataTable(sampleData)
* .build();
*
* return UiApp.createApplication().add(chart);
* }
*/
export interface AreaChartBuilder {
build(): Chart;
reverseCategories(): AreaChartBuilder;
setBackgroundColor(cssValue: string): AreaChartBuilder;
setColors(cssValues: String[]): AreaChartBuilder;
setDataSourceUrl(url: string): AreaChartBuilder;
setDataTable(tableBuilder: DataTableBuilder): AreaChartBuilder;
setDataTable(table: DataTableSource): AreaChartBuilder;
setDataViewDefinition(dataViewDefinition: DataViewDefinition): AreaChartBuilder;
setDimensions(width: Integer, height: Integer): AreaChartBuilder;
setLegendPosition(position: Position): AreaChartBuilder;
setLegendTextStyle(textStyle: TextStyle): AreaChartBuilder;
setOption(option: string, value: Object): AreaChartBuilder;
setPointStyle(style: PointStyle): AreaChartBuilder;
setRange(start: Number, end: Number): AreaChartBuilder;
setStacked(): AreaChartBuilder;
setTitle(chartTitle: string): AreaChartBuilder;
setTitleTextStyle(textStyle: TextStyle): AreaChartBuilder;
setXAxisTextStyle(textStyle: TextStyle): AreaChartBuilder;
setXAxisTitle(title: string): AreaChartBuilder;
setXAxisTitleTextStyle(textStyle: TextStyle): AreaChartBuilder;
setYAxisTextStyle(textStyle: TextStyle): AreaChartBuilder;
setYAxisTitle(title: string): AreaChartBuilder;
setYAxisTitleTextStyle(textStyle: TextStyle): AreaChartBuilder;
useLogScale(): AreaChartBuilder;
}
/**
* Builder for bar charts. For more details, see the
* Google Charts documentation.
*
* Here is an example that shows how to build a bar chart. The data is
*
* imported from a Google spreadsheet.
*
* function doGet() {
* // Get sample data from a spreadsheet.
* var dataSourceUrl = 'https://docs.google.com/spreadsheet/tq?range=B1%3AC11' +
* '&key=0Aq4s9w_HxMs7dHpfX05JdmVSb1FpT21sbXd4NVE3UEE&gid=0&headers=-1';
*
* var chartBuilder = Charts.newBarChart()
* .setTitle('Top Grossing Films in US and Canada')
* .setXAxisTitle('USD')
* .setYAxisTitle('Film')
* .setDimensions(600, 500)
* .setLegendPosition(Charts.Position.BOTTOM)
* .setDataSourceUrl(dataSourceUrl);
*
* var chart = chartBuilder.build();
* return UiApp.createApplication().add(chart);
* }
*/
export interface BarChartBuilder {
build(): Chart;
reverseCategories(): BarChartBuilder;
reverseDirection(): BarChartBuilder;
setBackgroundColor(cssValue: string): BarChartBuilder;
setColors(cssValues: String[]): BarChartBuilder;
setDataSourceUrl(url: string): BarChartBuilder;
setDataTable(tableBuilder: DataTableBuilder): BarChartBuilder;
setDataTable(table: DataTableSource): BarChartBuilder;
setDataViewDefinition(dataViewDefinition: DataViewDefinition): BarChartBuilder;
setDimensions(width: Integer, height: Integer): BarChartBuilder;
setLegendPosition(position: Position): BarChartBuilder;
setLegendTextStyle(textStyle: TextStyle): BarChartBuilder;
setOption(option: string, value: Object): BarChartBuilder;
setRange(start: Number, end: Number): BarChartBuilder;
setStacked(): BarChartBuilder;
setTitle(chartTitle: string): BarChartBuilder;
setTitleTextStyle(textStyle: TextStyle): BarChartBuilder;
setXAxisTextStyle(textStyle: TextStyle): BarChartBuilder;
setXAxisTitle(title: string): BarChartBuilder;
setXAxisTitleTextStyle(textStyle: TextStyle): BarChartBuilder;
setYAxisTextStyle(textStyle: TextStyle): BarChartBuilder;
setYAxisTitle(title: string): BarChartBuilder;
setYAxisTitleTextStyle(textStyle: TextStyle): BarChartBuilder;
useLogScale(): BarChartBuilder;
}
/**
* A builder for category filter controls.
*
* A category filter is a picker to choose one or more between a set of defined values.
* Given a column of type string, this control will filter out the rows that
* don't match any of the picked values.
*
* Here is an example that creates a table chart a binds a category filter to it. This allows the
* user to filter the data the table displays.
*
* function doGet() {
* var app = UiApp.createApplication();
* var sampleData = Charts.newDataTable()
* .addColumn(Charts.ColumnType.STRING, "Month")
* .addColumn(Charts.ColumnType.NUMBER, "Dining")
* .addColumn(Charts.ColumnType.NUMBER, "Total")
* .addRow(["Jan", 60, 520])
* .addRow(["Feb", 50, 430])
* .addRow(["Mar", 53, 440])
* .addRow(["Apr", 70, 410])
* .addRow(["May", 80, 390])
* .addRow(["Jun", 60, 500])
* .addRow(["Jul", 100, 450])
* .addRow(["Aug", 140, 431])
* .addRow(["Sep", 75, 488])
* .addRow(["Oct", 70, 521])
* .addRow(["Nov", 58, 388])
* .addRow(["Dec", 63, 400])
* .build();
*
* var chart = Charts.newTableChart()
* .setDimensions(600, 500)
* .build();
*
* var categoryFilter = Charts.newCategoryFilter()
* .setFilterColumnLabel("Month")
* .setAllowMultiple(true)
* .setSortValues(true)
* .setLabelStacking(Charts.Orientation.VERTICAL)
* .setCaption('Choose categories...')
* .build();
*
* var panel = app.createVerticalPanel().setSpacing(10);
* panel.add(categoryFilter).add(chart);
*
* var dashboard = Charts.newDashboardPanel()
* .setDataTable(sampleData)
* .bind(categoryFilter, chart)
* .build();
*
* dashboard.add(panel);
* app.add(dashboard);
* return app;
* }
*
* documentation
*/
export interface CategoryFilterBuilder {
build(): Control;
setAllowMultiple(allowMultiple: boolean): CategoryFilterBuilder;
setAllowNone(allowNone: boolean): CategoryFilterBuilder;
setAllowTyping(allowTyping: boolean): CategoryFilterBuilder;
setCaption(caption: string): CategoryFilterBuilder;
setDataTable(tableBuilder: DataTableBuilder): CategoryFilterBuilder;
setDataTable(table: DataTableSource): CategoryFilterBuilder;
setFilterColumnIndex(columnIndex: Integer): CategoryFilterBuilder;
setFilterColumnLabel(columnLabel: string): CategoryFilterBuilder;
setLabel(label: string): CategoryFilterBuilder;
setLabelSeparator(labelSeparator: string): CategoryFilterBuilder;
setLabelStacking(orientation: Orientation): CategoryFilterBuilder;
setSelectedValuesLayout(layout: PickerValuesLayout): CategoryFilterBuilder;
setSortValues(sortValues: boolean): CategoryFilterBuilder;
setValues(values: String[]): CategoryFilterBuilder;
}
/**
* A Chart object, which can be embedded into documents, UI elements, or used as a static image. For
* charts embedded in spreadsheets, see
* EmbeddedChart.
*/
export interface Chart {
getAs(contentType: string): Base.Blob;
getBlob(): Base.Blob;
getId(): string;
getOptions(): ChartOptions;
getType(): string;
setId(id: string): Chart;
}
/**
* Exposes options currently configured for a Chart, such as height, color, etc.
*
* Please see the visualization
* reference documentation for information on what options are available. Specific options for
* each chart can be found by clicking on the specific chart in the chart gallery.
*
* These options are immutable.
*/
export interface ChartOptions {
get(option: string): Object;
}
/**
* Chart types supported by the Charts service.
*/
export enum ChartType { AREA, BAR, COLUMN, LINE, PIE, SCATTER, TABLE }
/**
* Entry point for creating Charts in scripts.
*
* This example creates a basic data table, populates an area chart with the data, and adds it into
* a UiApp:
*
* function doGet() {
* var data = Charts.newDataTable()
* .addColumn(Charts.ColumnType.STRING, "Month")
* .addColumn(Charts.ColumnType.NUMBER, "In Store")
* .addColumn(Charts.ColumnType.NUMBER, "Online")
* .addRow(["January", 10, 1])
* .addRow(["February", 12, 1])
* .addRow(["March", 20, 2])
* .addRow(["April", 25, 3])
* .addRow(["May", 30, 4])
* .build();
*
* var chart = Charts.newAreaChart()
* .setDataTable(data)
* .setStacked()
* .setRange(0, 40)
* .setTitle("Sales per Month")
* .build();
*
* var uiApp = UiApp.createApplication().setTitle("My Chart");
* uiApp.add(chart);
* return uiApp;
* }
*/
export interface Charts {
ChartType: ChartType
ColumnType: ColumnType
CurveStyle: CurveStyle
MatchType: MatchType
Orientation: Orientation
PickerValuesLayout: PickerValuesLayout
PointStyle: PointStyle
Position: Position
newAreaChart(): AreaChartBuilder;
newBarChart(): BarChartBuilder;
newCategoryFilter(): CategoryFilterBuilder;
newColumnChart(): ColumnChartBuilder;
newDashboardPanel(): DashboardPanelBuilder;
newDataTable(): DataTableBuilder;
newDataViewDefinition(): DataViewDefinitionBuilder;
newLineChart(): LineChartBuilder;
newNumberRangeFilter(): NumberRangeFilterBuilder;
newPieChart(): PieChartBuilder;
newScatterChart(): ScatterChartBuilder;
newStringFilter(): StringFilterBuilder;
newTableChart(): TableChartBuilder;
newTextStyle(): TextStyleBuilder;
}
/**
* Builder for column charts. For more details, see the
* Google Charts documentation.
*
* This example shows how to create a column chart with data from a data table.
*
* function doGet() {
* var sampleData = Charts.newDataTable()
* .addColumn(Charts.ColumnType.STRING, "Year")
* .addColumn(Charts.ColumnType.NUMBER, "Sales")
* .addColumn(Charts.ColumnType.NUMBER, "Expenses")
* .addRow(["2004", 1000, 400])
* .addRow(["2005", 1170, 460])
* .addRow(["2006", 660, 1120])
* .addRow(["2007", 1030, 540])
* .addRow(["2008", 800, 600])
* .addRow(["2009", 943, 678])
* .addRow(["2010", 1020, 550])
* .addRow(["2011", 910, 700])
* .addRow(["2012", 1230, 840])
* .build();
*
* var chart = Charts.newColumnChart()
* .setTitle('Sales vs. Expenses')
* .setXAxisTitle('Year')
* .setYAxisTitle('Amount (USD)')
* .setDimensions(600, 500)
* .setDataTable(sampleData)
* .build();
*
* return UiApp.createApplication().add(chart);
* }
*/
export interface ColumnChartBuilder {
build(): Chart;
reverseCategories(): ColumnChartBuilder;
setBackgroundColor(cssValue: string): ColumnChartBuilder;
setColors(cssValues: String[]): ColumnChartBuilder;
setDataSourceUrl(url: string): ColumnChartBuilder;
setDataTable(tableBuilder: DataTableBuilder): ColumnChartBuilder;
setDataTable(table: DataTableSource): ColumnChartBuilder;
setDataViewDefinition(dataViewDefinition: DataViewDefinition): ColumnChartBuilder;
setDimensions(width: Integer, height: Integer): ColumnChartBuilder;
setLegendPosition(position: Position): ColumnChartBuilder;
setLegendTextStyle(textStyle: TextStyle): ColumnChartBuilder;
setOption(option: string, value: Object): ColumnChartBuilder;
setRange(start: Number, end: Number): ColumnChartBuilder;
setStacked(): ColumnChartBuilder;
setTitle(chartTitle: string): ColumnChartBuilder;
setTitleTextStyle(textStyle: TextStyle): ColumnChartBuilder;
setXAxisTextStyle(textStyle: TextStyle): ColumnChartBuilder;
setXAxisTitle(title: string): ColumnChartBuilder;
setXAxisTitleTextStyle(textStyle: TextStyle): ColumnChartBuilder;
setYAxisTextStyle(textStyle: TextStyle): ColumnChartBuilder;
setYAxisTitle(title: string): ColumnChartBuilder;
setYAxisTitleTextStyle(textStyle: TextStyle): ColumnChartBuilder;
useLogScale(): ColumnChartBuilder;
}
/**
* An enumeration of the valid data types for columns in a DataTable.
*/
export enum ColumnType { DATE, NUMBER, STRING }
/**
* A user interface control object, that drives the data displayed by a DashboardPanel.
*
* A control can be embedded in a UI application. Controls are user interface widgets (category
* pickers, range sliders, autocompleters, etc.) users interact with in order to drive the data
* managed by a dashboard and the charts that are part of it.
* Controls collect user input and use the information to decide which of the data the
* dashboard is managing should be made available to the charts that are part of it.
* Given a data table, a control will filter out the data that doesn't comply with the
* conditions implied by its current state, and will expose the filtered data table as
* an output.
*
* For more details, see the Gviz
*
* documentation.
*/
export interface Control {
getId(): string;
getType(): string;
setId(id: string): Control;
}
/**
* An enumeration of the styles for curves in a chart.
*/
export enum CurveStyle { NORMAL, SMOOTH }
/**
* A dashboard is a visual structure that enables the organization and management
* of multiple charts that share the same underlying data.
*
* Controls are user interface widgets (category pickers, range sliders, autocompleters, etc.)
* users interact with in order to drive the data managed by a dashboard and the charts that
* are part of it. For example, a string filter control is a simple text input field that lets
* the user filter data via string matching. Given a column and matching options, the control
* will filter out the rows that don't match the term that's in the input field.
*
* The Gviz API defines a dashboard as a set of charts and controls bound together. The
* bindings between the different components define the data flow, the state of the
* controls filters views of the data which propagate in the dashboard and are
* eventually visualized with charts. For more details, see the Gviz
*
* documentation.
*
* The dashboard panel has two purposes, one is being a container for the charts and
* controls objects that compose the dashboard, and the other is holding the data and use
* as an interface for binding controls to charts.
*
* Here's an example of creating a dashboard and showing it in a UI app:
*
* function doGet() {
* // Create a data table with some sample data.
* var data = Charts.newDataTable()
* .addColumn(Charts.ColumnType.STRING, "Name")
* .addColumn(Charts.ColumnType.NUMBER, "Age")
* .addRow(["Michael", 18])
* .addRow(["Elisa", 12])
* .addRow(["John", 20])
* .addRow(["Jessica", 25])
* .addRow(["Aaron", 14])
* .addRow(["Margareth", 19])
* .addRow(["Miranda", 22])
* .addRow(["May", 20])
* .build();
*
* var chart = Charts.newBarChart()
* .setTitle("Ages")
* .build();
*
* var control = Charts.newStringFilter()
* .setFilterColumnLabel("Name")
* .build();
*
* // Bind the control to the chart in a dashboard panel.
* var dashboard = Charts.newDashboardPanel()
* .setDataTable(data)
* .bind(control, chart)
* .build();
*
* var uiApp = UiApp.createApplication().setTitle("My Dashboard");
*
* var panel = uiApp.createHorizontalPanel()
* .setVerticalAlignment(UiApp.VerticalAlignment.MIDDLE)
* .setSpacing(50);
*
* panel.add(control);
* panel.add(chart);
* dashboard.add(panel);
* uiApp.add(dashboard);
* return uiApp;
* }
*/
export interface DashboardPanel {
add(widget: UI.Widget): DashboardPanel;
getId(): string;
getType(): string;
setId(id: string): DashboardPanel;
}
/**
* A builder for a dashboard panel object. For an example of how to use
* DashboardPanelBuilder, refer to DashboardPanel.
*
* For more details, see the Gviz
*
* documentation.
*/
export interface DashboardPanelBuilder {
bind(control: Control, chart: Chart, controls: Control[], charts: Chart[]): DashboardPanelBuilder;
bind(control: Control, chart: Chart, controls: Control[], charts: Chart[]): DashboardPanelBuilder;
build(): DashboardPanel;
setDataTable(tableBuilder: DataTableBuilder): DashboardPanelBuilder;
setDataTable(source: DataTableSource): DashboardPanelBuilder;
}
/**
* A Data Table to be used in charts. A DataTable can come from sources such as Google
* Sheets or specified data-table URLs, or can be filled in by hand. This class intentionally has no
* methods: a DataTable can be passed around, but not manipulated directly.
*/
export interface DataTable {
}
/**
* Builder of DataTable objects. Building a data table consists of first specifying its columns,
* and then adding its rows, one at a time. Example:
*
* var data = Charts.newDataTable()
* .addColumn(Charts.ColumnType.STRING, "Month")
* .addColumn(Charts.ColumnType.NUMBER, "In Store")
* .addColumn(Charts.ColumnType.NUMBER, "Online")
* .addRow(["January", 10, 1])
* .addRow(["February", 12, 1])
* .addRow(["March", 20, 2])
* .addRow(["April", 25, 3])
* .addRow(["May", 30, 4])
* .build();
*/
export interface DataTableBuilder {
addColumn(type: ColumnType, label: string): DataTableBuilder;
addRow(values: Object[]): DataTableBuilder;
build(): DataTable;
setValue(row: Integer, column: Integer, value: Object): DataTableBuilder;
}
/**
* Interface for objects that can represent their data as a DataTable.
* Implementing classes
*
* NameBrief description
*
* DataTableA Data Table to be used in charts.
*
* RangeAccess and modify spreadsheet ranges.
*/
export interface DataTableSource {
getDataTable(): DataTable;
}
/**
* A data view definition for visualizing chart data.
*
* Data view definition can be set for charts to visualize a view derived from the given data table
* and not the data table itself. For example if the view definition of a chart states that the view
* columns are [0, 3], only the first and the third columns of the data table will be taken into
* consideration when drawing the chart. See DataViewDefinitionBuilder for an example on how
* to define and use a DataViewDefinition.
*/
export interface DataViewDefinition {
}
/**
* Builder for DataViewDefinition objects.
*
* Here's an example of using the builder. The data is imported from a Google spreadsheet.
*
* function doGet() {
* // This example creates two table charts side by side. One uses a data view definition to
* // restrict the number of displayed columns.
* var app = UiApp.createApplication();
* // Get sample data from a spreadsheet.
* var dataSourceUrl = 'https://docs.google.com/spreadsheet/tq?range=A1%3AF' +
* '&key=0Aq4s9w_HxMs7dHpfX05JdmVSb1FpT21sbXd4NVE3UEE&gid=4&headers=-1';
*
* // Create a chart to display all of the data.
* var originalChart = Charts.newTableChart()
* .setDimensions(600, 500)
* .setDataSourceUrl(dataSourceUrl)
* .build();
*
* // Create another chart to display a subset of the data (only columns 1 and 4).
* var dataViewDefinition = Charts.newDataViewDefinition().setColumns([0, 3]);
* var limitedChart = Charts.newTableChart()
* .setDimensions(200, 500)
* .setDataSourceUrl(dataSourceUrl)
* .setDataViewDefinition(dataViewDefinition)
* .build();
*
* var panel = app.createHorizontalPanel().setSpacing(15);
* panel.add(originalChart).add(limitedChart);
* return app.add(panel);
* }
*/
export interface DataViewDefinitionBuilder {
build(): DataViewDefinition;
setColumns(columns: Object[]): DataViewDefinitionBuilder;
}
/**
* Builder for line charts. For more details, see the
* Google Charts documentation.
*
* Here is an example that shows how to build a line chart. The data is
* imported from a Google spreadsheet.
*
* function doGet() {
* // Get sample data from a spreadsheet.
* var dataSourceUrl = 'https://docs.google.com/spreadsheet/tq?range=A1%3AG5' +
* '&key=0Aq4s9w_HxMs7dHpfX05JdmVSb1FpT21sbXd4NVE3UEE&gid=2&headers=-1';
*
* var chartBuilder = Charts.newLineChart()
* .setTitle('Yearly Rainfall')
* .setXAxisTitle('Month')
* .setYAxisTitle('Rainfall (in)')
* .setDimensions(600, 500)
* .setCurveStyle(Charts.CurveStyle.SMOOTH)
* .setPointStyle(Charts.PointStyle.MEDIUM)
* .setDataSourceUrl(dataSourceUrl);
*
* var chart = chartBuilder.build();
* return UiApp.createApplication().add(chart);
* }
*/
export interface LineChartBuilder {
build(): Chart;
reverseCategories(): LineChartBuilder;
setBackgroundColor(cssValue: string): LineChartBuilder;
setColors(cssValues: String[]): LineChartBuilder;
setCurveStyle(style: CurveStyle): LineChartBuilder;
setDataSourceUrl(url: string): LineChartBuilder;
setDataTable(tableBuilder: DataTableBuilder): LineChartBuilder;
setDataTable(table: DataTableSource): LineChartBuilder;
setDataViewDefinition(dataViewDefinition: DataViewDefinition): LineChartBuilder;
setDimensions(width: Integer, height: Integer): LineChartBuilder;
setLegendPosition(position: Position): LineChartBuilder;
setLegendTextStyle(textStyle: TextStyle): LineChartBuilder;
setOption(option: string, value: Object): LineChartBuilder;
setPointStyle(style: PointStyle): LineChartBuilder;
setRange(start: Number, end: Number): LineChartBuilder;
setTitle(chartTitle: string): LineChartBuilder;
setTitleTextStyle(textStyle: TextStyle): LineChartBuilder;
setXAxisTextStyle(textStyle: TextStyle): LineChartBuilder;
setXAxisTitle(title: string): LineChartBuilder;
setXAxisTitleTextStyle(textStyle: TextStyle): LineChartBuilder;
setYAxisTextStyle(textStyle: TextStyle): LineChartBuilder;
setYAxisTitle(title: string): LineChartBuilder;
setYAxisTitleTextStyle(textStyle: TextStyle): LineChartBuilder;
useLogScale(): LineChartBuilder;
}
/**
* An enumeration of how a string value should be matched.
* Matching a string is a boolean operation. Given a string, a match term (string), and a match
* type, the operation will output true in the following cases:
*
* If the match type equals EXACT and the match term equals the string.
* If the match type equals PREFIX and the match term is a prefix of the string.
* If the match type equals ANY and the match term is a substring of the string.
*
* This enumeration can be used in by a string filter control to decide which rows to filter out
* of the data table. Given a column to filter on, leave only the rows that match the value
* entered in the filter input box, using one of the above matching types.
*/
export enum MatchType { EXACT, PREFIX, ANY }
/**
* A builder for number range filter controls.
*
* A number range filter is a slider with two thumbs that lets the user select ranges of
* numeric values. Given a column of type number and matching options, this control will
* filter out the rows that don't match the range that was selected.
*
* This example creates a table chart bound to a number range filter:
*
* function doGet() {
* var app = UiApp.createApplication();
* // Get sample data from a spreadsheet.
* var dataSourceUrl = 'https://docs.google.com/spreadsheet/tq?range=A1%3AF' +
* '&key=0Aq4s9w_HxMs7dHpfX05JdmVSb1FpT21sbXd4NVE3UEE&gid=4&headers=-1';
* var data = SpreadsheetApp.openByUrl(dataSourceUrl).getSheetByName('US_GDP').getRange("A1:F");
*
* var chart = Charts.newTableChart()
* .setDimensions(600, 500)
* .build();
*
* var numberRangeFilter = Charts.newNumberRangeFilter()
* .setFilterColumnLabel("Year")
* .setShowRangeValues(true)
* .setLabel("Restrict year range")
* .build();
*
* var panel = app.createVerticalPanel().setSpacing(10);
* panel.add(numberRangeFilter).add(chart);
*
* // Create a new dashboard panel to bind the filter and chart together.
* var dashboard = Charts.newDashboardPanel()
* .setDataTable(data)
* .bind(numberRangeFilter, chart)
* .build();
*
* dashboard.add(panel);
* app.add(dashboard);
* return app;
* }
*
* documentation
*/
export interface NumberRangeFilterBuilder {
build(): Control;
setDataTable(tableBuilder: DataTableBuilder): NumberRangeFilterBuilder;
setDataTable(table: DataTableSource): NumberRangeFilterBuilder;
setFilterColumnIndex(columnIndex: Integer): NumberRangeFilterBuilder;
setFilterColumnLabel(columnLabel: string): NumberRangeFilterBuilder;
setLabel(label: string): NumberRangeFilterBuilder;
setLabelSeparator(labelSeparator: string): NumberRangeFilterBuilder;
setLabelStacking(orientation: Orientation): NumberRangeFilterBuilder;
setMaxValue(maxValue: Integer): NumberRangeFilterBuilder;
setMinValue(minValue: Integer): NumberRangeFilterBuilder;
setOrientation(orientation: Orientation): NumberRangeFilterBuilder;
setShowRangeValues(showRangeValues: boolean): NumberRangeFilterBuilder;
setTicks(ticks: Integer): NumberRangeFilterBuilder;
}
/**
* An enumeration of the orientation of an object.
*/
export enum Orientation { HORIZONTAL, VERTICAL }
/**
* An enumeration of how to display selected values in picker widget.
*/
export enum PickerValuesLayout { ASIDE, BELOW, BELOW_WRAPPING, BELOW_STACKED }
/**
* A builder for pie charts. For more details, see the
* Google Charts documentation.
*
* Here is an example that shows how to build a pie chart. The data is
* imported from a Google spreadsheet.
*
* function doGet() {
* // Get sample data from a spreadsheet.
* var dataSourceUrl = 'https://docs.google.com/spreadsheet/tq?range=A1%3AB8' +
* '&key=0Aq4s9w_HxMs7dHpfX05JdmVSb1FpT21sbXd4NVE3UEE&gid=3&headers=-1';
*
* var chartBuilder = Charts.newPieChart()
* .setTitle('World Population by Continent')
* .setDimensions(600, 500)
* .set3D()
* .setDataSourceUrl(dataSourceUrl);
*
* var chart = chartBuilder.build();
* return UiApp.createApplication().add(chart);
* }
*/
export interface PieChartBuilder {
build(): Chart;
reverseCategories(): PieChartBuilder;
set3D(): PieChartBuilder;
setBackgroundColor(cssValue: string): PieChartBuilder;
setColors(cssValues: String[]): PieChartBuilder;
setDataSourceUrl(url: string): PieChartBuilder;
setDataTable(tableBuilder: DataTableBuilder): PieChartBuilder;
setDataTable(table: DataTableSource): PieChartBuilder;
setDataViewDefinition(dataViewDefinition: DataViewDefinition): PieChartBuilder;
setDimensions(width: Integer, height: Integer): PieChartBuilder;
setLegendPosition(position: Position): PieChartBuilder;
setLegendTextStyle(textStyle: TextStyle): PieChartBuilder;
setOption(option: string, value: Object): PieChartBuilder;
setTitle(chartTitle: string): PieChartBuilder;
setTitleTextStyle(textStyle: TextStyle): PieChartBuilder;
}
/**
* An enumeration of the styles of points in a line.
*/
export enum PointStyle { NONE, TINY, MEDIUM, LARGE, HUGE }
/**
* An enumeration of legend positions within a chart.
*/
export enum Position { TOP, RIGHT, BOTTOM, NONE }
/**
* Builder for scatter charts. For more details, see the
* Google Charts documentation.
*
* Here is an example that shows how to build a scatter chart. The data is
* imported from a Google spreadsheet.
*
* function doGet() {
* // Get sample data from a spreadsheet.
* var dataSourceUrl = 'https://docs.google.com/spreadsheet/tq?range=C1%3AD' +
* '&key=0Aq4s9w_HxMs7dHpfX05JdmVSb1FpT21sbXd4NVE3UEE&gid=4&headers=-1';
*
* var chartBuilder = Charts.newScatterChart()
* .setTitle('Adjusted GDP vs. U.S. Population')
* .setXAxisTitle('U.S. Population (millions)')
* .setYAxisTitle('Adjusted GDP ($ billions)')
* .setDimensions(600, 500)
* .setLegendPosition(Charts.Position.NONE)
* .setDataSourceUrl(dataSourceUrl);
*
* var chart = chartBuilder.build();
* return UiApp.createApplication().add(chart);
* }
*/
export interface ScatterChartBuilder {
build(): Chart;
setBackgroundColor(cssValue: string): ScatterChartBuilder;
setColors(cssValues: String[]): ScatterChartBuilder;
setDataSourceUrl(url: string): ScatterChartBuilder;
setDataTable(tableBuilder: DataTableBuilder): ScatterChartBuilder;
setDataTable(table: DataTableSource): ScatterChartBuilder;
setDataViewDefinition(dataViewDefinition: DataViewDefinition): ScatterChartBuilder;
setDimensions(width: Integer, height: Integer): ScatterChartBuilder;
setLegendPosition(position: Position): ScatterChartBuilder;
setLegendTextStyle(textStyle: TextStyle): ScatterChartBuilder;
setOption(option: string, value: Object): ScatterChartBuilder;
setPointStyle(style: PointStyle): ScatterChartBuilder;
setTitle(chartTitle: string): ScatterChartBuilder;
setTitleTextStyle(textStyle: TextStyle): ScatterChartBuilder;
setXAxisLogScale(): ScatterChartBuilder;
setXAxisRange(start: Number, end: Number): ScatterChartBuilder;
setXAxisTextStyle(textStyle: TextStyle): ScatterChartBuilder;
setXAxisTitle(title: string): ScatterChartBuilder;
setXAxisTitleTextStyle(textStyle: TextStyle): ScatterChartBuilder;
setYAxisLogScale(): ScatterChartBuilder;
setYAxisRange(start: Number, end: Number): ScatterChartBuilder;
setYAxisTextStyle(textStyle: TextStyle): ScatterChartBuilder;
setYAxisTitle(title: string): ScatterChartBuilder;
setYAxisTitleTextStyle(textStyle: TextStyle): ScatterChartBuilder;
}
/**
* A builder for string filter controls.
*
* A string filter is a simple text input field that lets the user filter data via string matching.
* Given a column of type string and matching options, this control will filter out the rows that
* don't match the term that's in the input field.
*
* This example creates a table chart and binds it to a string filter. Using the filter, it is
* possible to change the table chart to display a subset of its data.
*
* function doGet() {
* var app = UiApp.createApplication();
* var sampleData = Charts.newDataTable()
* .addColumn(Charts.ColumnType.STRING, "Month")
* .addColumn(Charts.ColumnType.NUMBER, "Dining")
* .addColumn(Charts.ColumnType.NUMBER, "Total")
* .addRow(["Jan", 60, 520])
* .addRow(["Feb", 50, 430])
* .addRow(["Mar", 53, 440])
* .addRow(["Apr", 70, 410])
* .addRow(["May", 80, 390])
* .addRow(["Jun", 60, 500])
* .addRow(["Jul", 100, 450])
* .addRow(["Aug", 140, 431])
* .addRow(["Sep", 75, 488])
* .addRow(["Oct", 70, 521])
* .addRow(["Nov", 58, 388])
* .addRow(["Dec", 63, 400])
* .build();
*
* var chart = Charts.newTableChart()
* .setDimensions(600, 500)
* .build();
*
* var stringFilter = Charts.newStringFilter()
* .setFilterColumnLabel("Month")
* .setRealtimeTrigger(true)
* .setCaseSensitive(true)
* .setLabel("Filter months shown")
* .build();
*
* var panel = app.createVerticalPanel().setSpacing(10);
* panel.add(stringFilter).add(chart);
*
* // Create a dashboard panel to bind the filter and the chart together.
* var dashboard = Charts.newDashboardPanel()
* .setDataTable(sampleData)
* .bind(stringFilter, chart)
* .build();
*
* dashboard.add(panel);
* app.add(dashboard);
* return app;
* }
*
* documentation
*/
export interface StringFilterBuilder {
build(): Control;
setCaseSensitive(caseSensitive: boolean): StringFilterBuilder;
setDataTable(tableBuilder: DataTableBuilder): StringFilterBuilder;
setDataTable(table: DataTableSource): StringFilterBuilder;
setFilterColumnIndex(columnIndex: Integer): StringFilterBuilder;
setFilterColumnLabel(columnLabel: string): StringFilterBuilder;
setLabel(label: string): StringFilterBuilder;
setLabelSeparator(labelSeparator: string): StringFilterBuilder;
setLabelStacking(orientation: Orientation): StringFilterBuilder;
setMatchType(matchType: MatchType): StringFilterBuilder;
setRealtimeTrigger(realtimeTrigger: boolean): StringFilterBuilder;
}
/**
* A builder for table charts. For more details, see the
* Google Charts documentation.
*
* Here is an example that shows how to build a table chart. The data is
* imported from a Google spreadsheet.
*
* function doGet() {
* // Get sample data from a spreadsheet.
* var dataSourceUrl = 'https://docs.google.com/spreadsheet/tq?range=A1%3AF' +
* '&key=0Aq4s9w_HxMs7dHpfX05JdmVSb1FpT21sbXd4NVE3UEE&gid=4&headers=-1';
*
* var chartBuilder = Charts.newTableChart()
* .setDimensions(600, 500)
* .enablePaging(20)
* .setDataSourceUrl(dataSourceUrl);
*
* var chart = chartBuilder.build();
* return UiApp.createApplication().add(chart);
* }
*/
export interface TableChartBuilder {
build(): Chart;
enablePaging(enablePaging: boolean): TableChartBuilder;
enablePaging(pageSize: Integer): TableChartBuilder;
enablePaging(pageSize: Integer, startPage: Integer): TableChartBuilder;
enableRtlTable(rtlEnabled: boolean): TableChartBuilder;
enableSorting(enableSorting: boolean): TableChartBuilder;
setDataSourceUrl(url: string): TableChartBuilder;
setDataTable(tableBuilder: DataTableBuilder): TableChartBuilder;
setDataTable(table: DataTableSource): TableChartBuilder;
setDataViewDefinition(dataViewDefinition: DataViewDefinition): TableChartBuilder;
setDimensions(width: Integer, height: Integer): TableChartBuilder;
setFirstRowNumber(number: Integer): TableChartBuilder;
setInitialSortingAscending(column: Integer): TableChartBuilder;
setInitialSortingDescending(column: Integer): TableChartBuilder;
setOption(option: string, value: Object): TableChartBuilder;
showRowNumberColumn(showRowNumber: boolean): TableChartBuilder;
useAlternatingRowStyle(alternate: boolean): TableChartBuilder;
}
/**
* A text style configuration object. Used in charts options to configure text style for
* elements that accepts it, such as title, horizontal axis, vertical axis, legend and tooltip.
*
* // This example creates a chart specifying different text styles for the title and axes.
* function doGet() {
* var sampleData = Charts.newDataTable()
* .addColumn(Charts.ColumnType.STRING, "Seasons")
* .addColumn(Charts.ColumnType.NUMBER, "Rainy Days")
* .addRow(["Winter", 5])
* .addRow(["Spring", 12])
* .addRow(["Summer", 8])
* .addRow(["Fall", 8])
* .build();
*
* var titleTextStyleBuilder = Charts.newTextStyle()
* .setColor('#0000FF').setFontSize(26).setFontName('Ariel');
* var axisTextStyleBuilder = Charts.newTextStyle()
* .setColor('#3A3A3A').setFontSize(20).setFontName('Ariel');
* var titleTextStyle = titleTextStyleBuilder.build();
* var axisTextStyle = axisTextStyleBuilder.build();
*
* var chart = Charts.newLineChart()
* .setTitleTextStyle(titleTextStyle)
* .setXAxisTitleTextStyle(axisTextStyle)
* .setYAxisTitleTextStyle(axisTextStyle)
* .setTitle('Rainy Days Per Season')
* .setXAxisTitle('Season')
* .setYAxisTitle('Number of Rainy Days')
* .setDataTable(sampleData)
* .build();
*
* return UiApp.createApplication().add(chart);
* }
*/
export interface TextStyle {
getColor(): string;
getFontName(): string;
getFontSize(): Number;
}
/**
* A builder used to create TextStyle objects. It allows configuration of the text's
* properties such as name, color, and size.
*
* The following example shows how to create a text style using the builder. For a more complete
* example, refer to the documentation for TextStyle.
*
* // Creates a new text style that uses 26-point, blue, Ariel font.
* var textStyleBuilder = Charts.newTextStyle()
* .setColor('#0000FF').setFontName('Ariel').setFontSize(26);
* var style = textStyleBuilder.build();
*/
export interface TextStyleBuilder {
build(): TextStyle;
setColor(cssValue: string): TextStyleBuilder;
setFontName(fontName: string): TextStyleBuilder;
setFontSize(fontSize: Number): TextStyleBuilder;
}
}
}
declare var Charts: GoogleAppsScript.Charts.Charts;
+294
View File
@@ -0,0 +1,294 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Contacts {
/**
* Address field in a contact.
*/
export interface AddressField {
deleteAddressField(): void;
getAddress(): string;
getLabel(): Object;
isPrimary(): boolean;
setAddress(address: string): AddressField;
setAsPrimary(): AddressField;
setLabel(field: Field): AddressField;
setLabel(label: string): AddressField;
}
/**
* Company field in a Contact.
*/
export interface CompanyField {
deleteCompanyField(): void;
getCompanyName(): string;
getJobTitle(): string;
isPrimary(): boolean;
setAsPrimary(): CompanyField;
setCompanyName(company: string): CompanyField;
setJobTitle(title: string): CompanyField;
}
/**
* A Contact contains the name, address, and various contact details of a contact.
*/
export interface Contact {
addAddress(label: Object, address: string): AddressField;
addCompany(company: string, title: string): CompanyField;
addCustomField(label: Object, content: Object): CustomField;
addDate(label: Object, month: Base.Month, day: Integer, year: Integer): DateField;
addEmail(label: Object, address: string): EmailField;
addIM(label: Object, address: string): IMField;
addPhone(label: Object, number: string): PhoneField;
addToGroup(group: ContactGroup): Contact;
addUrl(label: Object, url: string): UrlField;
deleteContact(): void;
getAddresses(): AddressField[];
getAddresses(label: Object): AddressField[];
getCompanies(): CompanyField[];
getContactGroups(): ContactGroup[];
getCustomFields(): CustomField[];
getCustomFields(label: Object): CustomField[];
getDates(): DateField[];
getDates(label: Object): DateField[];
getEmails(): EmailField[];
getEmails(label: Object): EmailField[];
getFamilyName(): string;
getFullName(): string;
getGivenName(): string;
getIMs(): IMField[];
getIMs(label: Object): IMField[];
getId(): string;
getInitials(): string;
getLastUpdated(): Date;
getMaidenName(): string;
getMiddleName(): string;
getNickname(): string;
getNotes(): string;
getPhones(): PhoneField[];
getPhones(label: Object): PhoneField[];
getPrefix(): string;
getPrimaryEmail(): string;
getShortName(): string;
getSuffix(): string;
getUrls(): UrlField[];
getUrls(label: Object): UrlField[];
removeFromGroup(group: ContactGroup): Contact;
setFamilyName(familyName: string): Contact;
setFullName(fullName: string): Contact;
setGivenName(givenName: string): Contact;
setInitials(initials: string): Contact;
setMaidenName(maidenName: string): Contact;
setMiddleName(middleName: string): Contact;
setNickname(nickname: string): Contact;
setNotes(notes: string): Contact;
setPrefix(prefix: string): Contact;
setShortName(shortName: string): Contact;
setSuffix(suffix: string): Contact;
getEmailAddresses(): String[];
getHomeAddress(): string;
getHomeFax(): string;
getHomePhone(): string;
getMobilePhone(): string;
getPager(): string;
getUserDefinedField(key: string): string;
getUserDefinedFields(): Object;
getWorkAddress(): string;
getWorkFax(): string;
getWorkPhone(): string;
setHomeAddress(addr: string): void;
setHomeFax(phone: string): void;
setHomePhone(phone: string): void;
setMobilePhone(phone: string): void;
setPager(phone: string): void;
setPrimaryEmail(primaryEmail: string): void;
setUserDefinedField(key: string, value: string): void;
setUserDefinedFields(o: Object): void;
setWorkAddress(addr: string): void;
setWorkFax(phone: string): void;
setWorkPhone(phone: string): void;
}
/**
* A ContactGroup is is a group of contacts.
*/
export interface ContactGroup {
addContact(contact: Contact): ContactGroup;
deleteGroup(): void;
getContacts(): Contact[];
getId(): string;
getName(): string;
isSystemGroup(): boolean;
removeContact(contact: Contact): ContactGroup;
setName(name: string): ContactGroup;
getGroupName(): string;
setGroupName(name: string): void;
}
/**
* This class allows users to access their own Google Contacts and create, remove, and update
* contacts listed therein.
*/
export interface ContactsApp {
ExtendedField: ExtendedField
Field: Field
Gender: Gender
Month: Base.Month
Priority: Priority
Sensitivity: Sensitivity
createContact(givenName: string, familyName: string, email: string): Contact;
createContactGroup(name: string): ContactGroup;
deleteContact(contact: Contact): void;
deleteContactGroup(group: ContactGroup): void;
getContact(emailAddress: string): Contact;
getContactById(id: string): Contact;
getContactGroup(name: string): ContactGroup;
getContactGroupById(id: string): ContactGroup;
getContactGroups(): ContactGroup[];
getContacts(): Contact[];
getContactsByAddress(query: string): Contact[];
getContactsByAddress(query: string, label: Field): Contact[];
getContactsByAddress(query: string, label: string): Contact[];
getContactsByCompany(query: string): Contact[];
getContactsByCustomField(query: Object, label: ExtendedField): Contact[];
getContactsByDate(month: Base.Month, day: Integer, label: Field): Contact[];
getContactsByDate(month: Base.Month, day: Integer, year: Integer, label: Field): Contact[];
getContactsByDate(month: Base.Month, day: Integer, year: Integer, label: string): Contact[];
getContactsByDate(month: Base.Month, day: Integer, label: string): Contact[];
getContactsByEmailAddress(query: string): Contact[];
getContactsByEmailAddress(query: string, label: Field): Contact[];
getContactsByEmailAddress(query: string, label: string): Contact[];
getContactsByGroup(group: ContactGroup): Contact[];
getContactsByIM(query: string): Contact[];
getContactsByIM(query: string, label: Field): Contact[];
getContactsByIM(query: string, label: string): Contact[];
getContactsByJobTitle(query: string): Contact[];
getContactsByName(query: string): Contact[];
getContactsByName(query: string, label: Field): Contact[];
getContactsByNotes(query: string): Contact[];
getContactsByPhone(query: string): Contact[];
getContactsByPhone(query: string, label: Field): Contact[];
getContactsByPhone(query: string, label: string): Contact[];
getContactsByUrl(query: string): Contact[];
getContactsByUrl(query: string, label: Field): Contact[];
getContactsByUrl(query: string, label: string): Contact[];
findByEmailAddress(email: string): Contact;
findContactGroup(name: string): ContactGroup;
getAllContacts(): Contact[];
}
/**
* A custom field in a Contact.
*/
export interface CustomField {
deleteCustomField(): void;
getLabel(): Object;
getValue(): Object;
setLabel(field: ExtendedField): CustomField;
setLabel(label: string): CustomField;
setValue(value: Object): CustomField;
}
/**
* A date field in a Contact.
*/
export interface DateField {
deleteDateField(): void;
getDay(): Integer;
getLabel(): Object;
getMonth(): Base.Month;
getYear(): Integer;
setDate(month: Base.Month, day: Integer): DateField;
setDate(month: Base.Month, day: Integer, year: Integer): DateField;
setLabel(label: Field): DateField;
setLabel(label: string): DateField;
}
/**
* An email field in a Contact.
*/
export interface EmailField {
deleteEmailField(): void;
getAddress(): string;
getDisplayName(): string;
getLabel(): Object;
isPrimary(): boolean;
setAddress(address: string): EmailField;
setAsPrimary(): EmailField;
setDisplayName(name: string): EmailField;
setLabel(field: Field): EmailField;
setLabel(label: string): EmailField;
}
/**
* An enum for extended contacts fields.
*/
export enum ExtendedField { HOBBY, MILEAGE, LANGUAGE, GENDER, BILLING_INFORMATION, DIRECTORY_SERVER, SENSITIVITY, PRIORITY, HOME, WORK, USER, OTHER }
/**
* An enum for contacts fields.
*/
export enum Field { FULL_NAME, GIVEN_NAME, MIDDLE_NAME, FAMILY_NAME, MAIDEN_NAME, NICKNAME, SHORT_NAME, INITIALS, PREFIX, SUFFIX, HOME_EMAIL, WORK_EMAIL, BIRTHDAY, ANNIVERSARY, HOME_ADDRESS, WORK_ADDRESS, ASSISTANT_PHONE, CALLBACK_PHONE, MAIN_PHONE, PAGER, HOME_FAX, WORK_FAX, HOME_PHONE, WORK_PHONE, MOBILE_PHONE, GOOGLE_VOICE, NOTES, GOOGLE_TALK, AIM, YAHOO, SKYPE, QQ, MSN, ICQ, JABBER, BLOG, FTP, PROFILE, HOME_PAGE, WORK_WEBSITE, HOME_WEBSITE, JOB_TITLE, COMPANY }
/**
* An enum for contact gender.
*/
export enum Gender { MALE, FEMALE }
/**
* An instant messaging field in a Contact.
*/
export interface IMField {
deleteIMField(): void;
getAddress(): string;
getLabel(): Object;
isPrimary(): boolean;
setAddress(address: string): IMField;
setAsPrimary(): IMField;
setLabel(field: Field): IMField;
setLabel(label: string): IMField;
}
/**
* A phone number field in a Contact.
*/
export interface PhoneField {
deletePhoneField(): void;
getLabel(): Object;
getPhoneNumber(): string;
isPrimary(): boolean;
setAsPrimary(): PhoneField;
setLabel(field: Field): PhoneField;
setLabel(label: string): PhoneField;
setPhoneNumber(number: string): PhoneField;
}
/**
* An enum for contact priority.
*/
export enum Priority { HIGH, LOW, NORMAL }
/**
* An enum for contact sensitivity.
*/
export enum Sensitivity { CONFIDENTIAL, NORMAL, PERSONAL, PRIVATE }
/**
* A URL field in a Contact.
*/
export interface UrlField {
deleteUrlField(): void;
getAddress(): string;
getLabel(): Object;
isPrimary(): boolean;
setAddress(address: string): UrlField;
setAsPrimary(): UrlField;
setLabel(field: Field): UrlField;
setLabel(label: string): UrlField;
}
}
}
declare var ContactsApp: GoogleAppsScript.Contacts.ContactsApp;
+54
View File
@@ -0,0 +1,54 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module Content {
/**
* Service for returning text content from a script.
*
* You can serve up text in various forms. For example, publish this script as a web app.
*
* function doGet() {
* return ContentService.createTextOutput("Hello World");
* }
*/
export interface ContentService {
MimeType: MimeType
createTextOutput(): TextOutput;
createTextOutput(content: string): TextOutput;
}
/**
* An enum for mime types that can be served from a script.
*/
export enum MimeType { ATOM, CSV, ICAL, JAVASCRIPT, JSON, RSS, TEXT, VCARD, XML }
/**
* A TextOutput object that can be served from a script.
*
* Due to security considerations, scripts cannot directly return text content to a browser.
* Instead, the browser is redirected to googleusercontent.com, which will display it without any
* further sanitization or manipulation.
*
* You can return text content like this:
*
* function doGet() {
* return ContentService.createPlainTextOutput("hello world!");
* }
*
* ContentService
*/
export interface TextOutput {
append(addedContent: string): TextOutput;
clear(): TextOutput;
downloadAsFile(filename: string): TextOutput;
getContent(): string;
getFileName(): string;
getMimeType(): MimeType;
setContent(content: string): TextOutput;
setMimeType(mimeType: MimeType): TextOutput;
}
}
}
declare var ContentService: GoogleAppsScript.Content.ContentService;
File diff suppressed because it is too large Load Diff
+261
View File
@@ -0,0 +1,261 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Drive {
/**
* An enum representing classes of users who can access a file or folder, besides any individual
* users who have been explicitly given access. These properties can be accessed from
* DriveApp.Access.
*
* // Creates a folder that anyone on the Internet can read from and write to. (Domain
* // administrators can prohibit this setting for users of Google Apps for Business, Google Apps
* // for Education, or Google Apps for Your Domain.)
* var folder = DriveApp.createFolder('Shared Folder');
* folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
*/
export enum Access { ANYONE, ANYONE_WITH_LINK, DOMAIN, DOMAIN_WITH_LINK, PRIVATE }
/**
* Allows scripts to create, find, and modify files and folders in Google Drive.
*
* // Log the name of every file in the user's Drive.
* var files = DriveApp.getFiles();
* while (files.hasNext()) {
* var file = files.next();
* Logger.log(file.getName());
* }
*/
export interface DriveApp {
Access: Access
Permission: Permission
addFile(child: File): Folder;
addFolder(child: Folder): Folder;
continueFileIterator(continuationToken: string): FileIterator;
continueFolderIterator(continuationToken: string): FolderIterator;
createFile(blob: Base.BlobSource): File;
createFile(name: string, content: string): File;
createFile(name: string, content: string, mimeType: string): File;
createFolder(name: string): Folder;
getFileById(id: string): File;
getFiles(): FileIterator;
getFilesByName(name: string): FileIterator;
getFilesByType(mimeType: string): FileIterator;
getFolderById(id: string): Folder;
getFolders(): FolderIterator;
getFoldersByName(name: string): FolderIterator;
getRootFolder(): Folder;
getStorageLimit(): Integer;
getStorageUsed(): Integer;
getTrashedFiles(): FileIterator;
getTrashedFolders(): FolderIterator;
removeFile(child: File): Folder;
removeFolder(child: Folder): Folder;
searchFiles(params: string): FileIterator;
searchFolders(params: string): FolderIterator;
}
/**
* A file in Google Drive. Files can be accessed or created from DriveApp.
*
* // Trash every untitled spreadsheet that hasn't been updated in a week.
* var files = DriveApp.getFilesByName('Untitled spreadsheet');
* while (files.hasNext()) {
* var file = files.next();
* if (new Date() - file.getLastUpdated() > 7 * 24 * 60 * 60 * 1000) {
* file.setTrashed(true);
* }
* }
*/
export interface File {
addCommenter(emailAddress: string): File;
addCommenter(user: Base.User): File;
addCommenters(emailAddresses: String[]): File;
addEditor(emailAddress: string): File;
addEditor(user: Base.User): File;
addEditors(emailAddresses: String[]): File;
addViewer(emailAddress: string): File;
addViewer(user: Base.User): File;
addViewers(emailAddresses: String[]): File;
getAccess(email: string): Permission;
getAccess(user: Base.User): Permission;
getAs(contentType: string): Base.Blob;
getBlob(): Base.Blob;
getDateCreated(): Date;
getDescription(): string;
getDownloadUrl(): string;
getEditors(): User[];
getId(): string;
getLastUpdated(): Date;
getMimeType(): string;
getName(): string;
getOwner(): User;
getParents(): FolderIterator;
getSharingAccess(): Access;
getSharingPermission(): Permission;
getSize(): Integer;
getThumbnail(): Base.Blob;
getUrl(): string;
getViewers(): User[];
isShareableByEditors(): boolean;
isStarred(): boolean;
isTrashed(): boolean;
makeCopy(): File;
makeCopy(destination: Folder): File;
makeCopy(name: string): File;
makeCopy(name: string, destination: Folder): File;
removeCommenter(emailAddress: string): File;
removeCommenter(user: Base.User): File;
removeEditor(emailAddress: string): File;
removeEditor(user: Base.User): File;
removeViewer(emailAddress: string): File;
removeViewer(user: Base.User): File;
revokePermissions(user: string): File;
revokePermissions(user: Base.User): File;
setContent(content: string): File;
setDescription(description: string): File;
setName(name: string): File;
setOwner(emailAddress: string): File;
setOwner(user: Base.User): File;
setShareableByEditors(shareable: boolean): File;
setSharing(accessType: Access, permissionType: Permission): File;
setStarred(starred: boolean): File;
setTrashed(trashed: boolean): File;
}
/**
* An iterator that allows scripts to iterate over a potentially large collection of files. File
* iterators can be acccessed from DriveApp or a Folder.
*
* // Log the name of every file in the user's Drive.
* var files = DriveApp.getFiles();
* while (files.hasNext()) {
* var file = files.next();
* Logger.log(file.getName());
* }
*/
export interface FileIterator {
getContinuationToken(): string;
hasNext(): boolean;
next(): File;
}
/**
* A folder in Google Drive. Folders can be accessed or created from DriveApp.
*
* // Log the name of every folder in the user's Drive.
* var folders = DriveApp.getFolders();
* while (folders.hasNext()) {
* var folder = folders.next();
* Logger.log(folder.getName());
* }
*/
export interface Folder {
addEditor(emailAddress: string): Folder;
addEditor(user: Base.User): Folder;
addEditors(emailAddresses: String[]): Folder;
addFile(child: File): Folder;
addFolder(child: Folder): Folder;
addViewer(emailAddress: string): Folder;
addViewer(user: Base.User): Folder;
addViewers(emailAddresses: String[]): Folder;
createFile(blob: Base.BlobSource): File;
createFile(name: string, content: string): File;
createFile(name: string, content: string, mimeType: string): File;
createFolder(name: string): Folder;
getAccess(email: string): Permission;
getAccess(user: Base.User): Permission;
getDateCreated(): Date;
getDescription(): string;
getEditors(): User[];
getFiles(): FileIterator;
getFilesByName(name: string): FileIterator;
getFilesByType(mimeType: string): FileIterator;
getFolders(): FolderIterator;
getFoldersByName(name: string): FolderIterator;
getId(): string;
getLastUpdated(): Date;
getName(): string;
getOwner(): User;
getParents(): FolderIterator;
getSharingAccess(): Access;
getSharingPermission(): Permission;
getSize(): Integer;
getUrl(): string;
getViewers(): User[];
isShareableByEditors(): boolean;
isStarred(): boolean;
isTrashed(): boolean;
removeEditor(emailAddress: string): Folder;
removeEditor(user: Base.User): Folder;
removeFile(child: File): Folder;
removeFolder(child: Folder): Folder;
removeViewer(emailAddress: string): Folder;
removeViewer(user: Base.User): Folder;
revokePermissions(user: string): Folder;
revokePermissions(user: Base.User): Folder;
searchFiles(params: string): FileIterator;
searchFolders(params: string): FolderIterator;
setDescription(description: string): Folder;
setName(name: string): Folder;
setOwner(emailAddress: string): Folder;
setOwner(user: Base.User): Folder;
setShareableByEditors(shareable: boolean): Folder;
setSharing(accessType: Access, permissionType: Permission): Folder;
setStarred(starred: boolean): Folder;
setTrashed(trashed: boolean): Folder;
}
/**
* An object that allows scripts to iterate over a potentially large collection of folders. Folder
* iterators can be acccessed from DriveApp, a File, or a Folder.
*
* // Log the name of every folder in the user's Drive.
* var folders = DriveApp.getFolders();
* while (folders.hasNext()) {
* var folder = folders.next();
* Logger.log(folder.getName());
* }
*/
export interface FolderIterator {
getContinuationToken(): string;
hasNext(): boolean;
next(): Folder;
}
/**
* An enum representing the permissions granted to users who can access a file or folder, besides
* any individual users who have been explicitly given access. These properties can be accessed from
* DriveApp.Permission.
*
* // Creates a folder that anyone on the Internet can read from and write to. (Domain
* // administrators can prohibit this setting for users of Google Apps for Business, Google Apps
* // for Education, or Google Apps for Your Domain.)
* var folder = DriveApp.createFolder('Shared Folder');
* folder.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT);
*/
export enum Permission { VIEW, EDIT, COMMENT, OWNER, NONE }
/**
* A user associated with a file in Google Drive. Users can be accessed from
* File.getEditors(), Folder.getViewers(), and other methods.
*
* // Log the email address of all users who have edit access to a file.
* var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz');
* var editors = file.getEditors();
* for (var i = 0; i < editors.length; i++) {
* Logger.log(editors[i].getEmail());
* }
*/
export interface User {
getDomain(): string;
getEmail(): string;
getName(): string;
getPhotoUrl(): string;
getUserLoginId(): string;
}
}
}
declare var DriveApp: GoogleAppsScript.Drive.DriveApp;
+749
View File
@@ -0,0 +1,749 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Forms {
/**
* An enum representing the supported types of image alignment. Alignment types can be accessed from
* FormApp.Alignment.
*
* // Open a form by ID and add a new image item with alignment
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var img = UrlFetchApp.fetch('https://www.google.com/images/srpr/logo4w.png');
* form.addImageItem()
* .setImage(img)
* .setAlignment(FormApp.Alignment.CENTER);
*/
export enum Alignment { LEFT, CENTER, RIGHT }
/**
* A question item that allows the respondent to select one or more checkboxes, as well as an
* optional "other" field. Items can be accessed or created from a Form.
*
* // Open a form by ID and add a new checkbox item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addCheckboxItem();
* item.setTitle('What condiments would you like on your hot dog?')
* .setChoices([
* item.createChoice('Ketchup'),
* item.createChoice('Mustard'),
* item.createChoice('Relish')
* ])
* .showOtherOption(true);
*/
export interface CheckboxItem {
createChoice(value: string): Choice;
createResponse(responses: String[]): ItemResponse;
duplicate(): CheckboxItem;
getChoices(): Choice[];
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
hasOtherOption(): boolean;
isRequired(): boolean;
setChoiceValues(values: String[]): CheckboxItem;
setChoices(choices: Choice[]): CheckboxItem;
setHelpText(text: string): CheckboxItem;
setRequired(enabled: boolean): CheckboxItem;
setTitle(title: string): CheckboxItem;
showOtherOption(enabled: boolean): CheckboxItem;
}
/**
* A single choice associated with a type of Item that supports choices, like
* CheckboxItem, ListItem, or MultipleChoiceItem.
*
* // Create a new form and add a multiple-choice item.
* var form = FormApp.create('Form Name');
* var item = form.addMultipleChoiceItem();
* item.setTitle('Do you prefer cats or dogs?')
* .setChoices([
* item.createChoice('Cats', FormApp.PageNavigationType.CONTINUE),
* item.createChoice('Dogs', FormApp.PageNavigationType.RESTART)
* ]);
*
* // Add another page because navigation has no effect on the last page.
* form.addPageBreakItem().setTitle('You chose well!');
*
* // Log the navigation types that each choice results in.
* var choices = item.getChoices();
* for (var i = 0; i < choices.length; i++) {
* Logger.log('If the respondent chooses "%s", the form will %s.',
* choices[i].getValue(),
* choices[i].getPageNavigationType());
* }
*/
export interface Choice {
getGotoPage(): PageBreakItem;
getPageNavigationType(): PageNavigationType;
getValue(): string;
}
/**
* A question item that allows the respondent to indicate a date. Items can be accessed or created
* from a Form.
*
* // Open a form by ID and add a new date item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addDateItem();
* item.setTitle('When were you born?');
*/
export interface DateItem {
createResponse(response: Date): ItemResponse;
duplicate(): DateItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
includesYear(): boolean;
isRequired(): boolean;
setHelpText(text: string): DateItem;
setIncludesYear(enableYear: boolean): DateItem;
setRequired(enabled: boolean): DateItem;
setTitle(title: string): DateItem;
}
/**
* A question item that allows the respondent to indicate a date and time. Items can be accessed or
* created from a Form.
*
* // Open a form by ID and add a new date-time item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addDateTimeItem();
* item.setTitle('When do you want to meet?');
*/
export interface DateTimeItem {
createResponse(response: Date): ItemResponse;
duplicate(): DateTimeItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
includesYear(): boolean;
isRequired(): boolean;
setHelpText(text: string): DateTimeItem;
setIncludesYear(enableYear: boolean): DateTimeItem;
setRequired(enabled: boolean): DateTimeItem;
setTitle(title: string): DateTimeItem;
}
/**
* An enum representing the supported types of form-response destinations. All forms, including
* those that do not have a destination set explicitly,
* save
* a copy of responses in the form's response store. Destination types can be accessed from
* FormApp.DestinationType.
*
* // Open a form by ID and create a new spreadsheet.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var ss = SpreadsheetApp.create('Spreadsheet Name');
*
* // Update the form's response destination.
* form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
*/
export enum DestinationType { SPREADSHEET }
/**
* A question item that allows the respondent to indicate a length of time. Items can be accessed or
* created from a Form.
*
* // Open a form by ID and add a new duration item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addDurationItem();
* item.setTitle('How long can you hold your breath?');
*/
export interface DurationItem {
createResponse(hours: Integer, minutes: Integer, seconds: Integer): ItemResponse;
duplicate(): DurationItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
isRequired(): boolean;
setHelpText(text: string): DurationItem;
setRequired(enabled: boolean): DurationItem;
setTitle(title: string): DurationItem;
}
/**
* A form that contains overall properties (such as title, settings, and where responses are stored)
* and items (which includes question items like checkboxes and layout items like page breaks).
* Forms can be accessed or created from FormApp.
*
* // Open a form by ID and create a new spreadsheet.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var ss = SpreadsheetApp.create('Spreadsheet Name');
*
* // Update form properties via chaining.
* form.setTitle('Form Name')
* .setDescription('Description of form')
* .setConfirmationMessage('Thanks for responding!')
* .setAllowResponseEdits(true)
* .setAcceptingResponses(false);
*
* // Update the form's response destination.
* form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
*/
export interface Form {
addCheckboxItem(): CheckboxItem;
addDateItem(): DateItem;
addDateTimeItem(): DateTimeItem;
addDurationItem(): DurationItem;
addEditor(emailAddress: string): Form;
addEditor(user: Base.User): Form;
addEditors(emailAddresses: String[]): Form;
addGridItem(): GridItem;
addImageItem(): ImageItem;
addListItem(): ListItem;
addMultipleChoiceItem(): MultipleChoiceItem;
addPageBreakItem(): PageBreakItem;
addParagraphTextItem(): ParagraphTextItem;
addScaleItem(): ScaleItem;
addSectionHeaderItem(): SectionHeaderItem;
addTextItem(): TextItem;
addTimeItem(): TimeItem;
addVideoItem(): VideoItem;
canEditResponse(): boolean;
collectsEmail(): boolean;
createResponse(): FormResponse;
deleteAllResponses(): Form;
deleteItem(index: Integer): void;
deleteItem(item: Item): void;
getConfirmationMessage(): string;
getCustomClosedFormMessage(): string;
getDescription(): string;
getDestinationId(): string;
getDestinationType(): DestinationType;
getEditUrl(): string;
getEditors(): Base.User[];
getId(): string;
getItemById(id: Integer): Item;
getItems(): Item[];
getItems(itemType: ItemType): Item[];
getPublishedUrl(): string;
getResponse(responseId: string): FormResponse;
getResponses(): FormResponse[];
getResponses(timestamp: Date): FormResponse[];
getShuffleQuestions(): boolean;
getSummaryUrl(): string;
getTitle(): string;
hasLimitOneResponsePerUser(): boolean;
hasProgressBar(): boolean;
hasRespondAgainLink(): boolean;
isAcceptingResponses(): boolean;
isPublishingSummary(): boolean;
moveItem(from: Integer, to: Integer): Item;
moveItem(item: Item, toIndex: Integer): Item;
removeDestination(): Form;
removeEditor(emailAddress: string): Form;
removeEditor(user: Base.User): Form;
requiresLogin(): boolean;
setAcceptingResponses(enabled: boolean): Form;
setAllowResponseEdits(enabled: boolean): Form;
setCollectEmail(collect: boolean): Form;
setConfirmationMessage(message: string): Form;
setCustomClosedFormMessage(message: string): Form;
setDescription(description: string): Form;
setDestination(type: DestinationType, id: string): Form;
setLimitOneResponsePerUser(enabled: boolean): Form;
setProgressBar(enabled: boolean): Form;
setPublishingSummary(enabled: boolean): Form;
setRequireLogin(requireLogin: boolean): Form;
setShowLinkToRespondAgain(enabled: boolean): Form;
setShuffleQuestions(shuffle: boolean): Form;
setTitle(title: string): Form;
shortenFormUrl(url: string): string;
}
/**
* Allows a script to open existing Forms or create new ones.
*
* // Open a form by ID.
* var existingForm = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
*
* // Create and open a form.
* var newForm = FormApp.create('Form Name');
*/
export interface FormApp {
Alignment: Alignment
DestinationType: DestinationType
ItemType: ItemType
PageNavigationType: PageNavigationType
create(title: string): Form;
getActiveForm(): Form;
getUi(): Base.Ui;
openById(id: string): Form;
openByUrl(url: string): Form;
}
/**
* A response to the form as a whole. Form responses have three main uses: they contain the answers
* submitted by a respondent (see getItemResponses(), they can be used to programmatically
* respond to the form (see withItemResponse(response) and submit()), and they
* can be used as a template to create a URL for the form with pre-filled answers. Form responses
* can be created or accessed from a Form.
*
* // Open a form by ID and log the responses to each question.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var formResponses = form.getResponses();
* for (var i = 0; i < formResponses.length; i++) {
* var formResponse = formResponses[i];
* var itemResponses = formResponse.getItemResponses();
* for (var j = 0; j < itemResponses.length; j++) {
* var itemResponse = itemResponses[j];
* Logger.log('Response #%s to the question "%s" was "%s"',
* (i + 1).toString(),
* itemResponse.getItem().getTitle(),
* itemResponse.getResponse());
* }
* }
*/
export interface FormResponse {
getEditResponseUrl(): string;
getId(): string;
getItemResponses(): ItemResponse[];
getRespondentEmail(): string;
getResponseForItem(item: Item): ItemResponse;
getTimestamp(): Date;
submit(): FormResponse;
toPrefilledUrl(): string;
withItemResponse(response: ItemResponse): FormResponse;
}
/**
* A question item, presented as a grid of columns and rows, that allows the respondent to select
* one choice per row from a sequence of radio buttons. Items can be accessed or created from a
* Form.
*
* // Open a form by ID and add a new grid item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addGridItem();
* item.setTitle('Rate your interests')
* .setRows(['Cars', 'Computers', 'Celebrities'])
* .setColumns(['Boring', 'So-so', 'Interesting']);
*/
export interface GridItem {
createResponse(responses: String[]): ItemResponse;
duplicate(): GridItem;
getColumns(): String[];
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getRows(): String[];
getTitle(): string;
getType(): ItemType;
isRequired(): boolean;
setColumns(columns: String[]): GridItem;
setHelpText(text: string): GridItem;
setRequired(enabled: boolean): GridItem;
setRows(rows: String[]): GridItem;
setTitle(title: string): GridItem;
}
/**
* A layout item that displays an image. Items can be accessed or created from a Form.
*
* // Open a form by ID and add a new image item
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var img = UrlFetchApp.fetch('https://www.google.com/images/srpr/logo4w.png');
* form.addImageItem()
* .setTitle('Google')
* .setHelpText('Google Logo') // The help text is the image description
* .setImage(img);
*/
export interface ImageItem {
duplicate(): ImageItem;
getAlignment(): Alignment;
getHelpText(): string;
getId(): Integer;
getImage(): Base.Blob;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
getWidth(): Integer;
setAlignment(alignment: Alignment): ImageItem;
setHelpText(text: string): ImageItem;
setImage(image: Base.BlobSource): ImageItem;
setTitle(title: string): ImageItem;
setWidth(width: Integer): ImageItem;
}
/**
* A generic form item that contains properties common to all items, such as title and help text.
* Items can be accessed or created from a Form.
*
* To operate on type-specific properties, use getType() to check the item's
* ItemType, then cast the item to the
* appropriate class using a method like asCheckboxItem().
*
* // Create a new form and add a text item.
* var form = FormApp.create('Form Name');
* form.addTextItem();
*
* // Access the text item as a generic item.
* var items = form.getItems();
* var item = items[0];
*
* // Cast the generic item to the text-item class.
* if (item.getType() == 'TEXT') {
* var textItem = item.asTextItem();
* textItem.setRequired(false);
* }
*/
export interface Item {
asCheckboxItem(): CheckboxItem;
asDateItem(): DateItem;
asDateTimeItem(): DateTimeItem;
asDurationItem(): DurationItem;
asGridItem(): GridItem;
asImageItem(): ImageItem;
asListItem(): ListItem;
asMultipleChoiceItem(): MultipleChoiceItem;
asPageBreakItem(): PageBreakItem;
asParagraphTextItem(): ParagraphTextItem;
asScaleItem(): ScaleItem;
asSectionHeaderItem(): SectionHeaderItem;
asTextItem(): TextItem;
asTimeItem(): TimeItem;
asVideoItem(): VideoItem;
duplicate(): Item;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
setHelpText(text: string): Item;
setTitle(title: string): Item;
}
/**
* A response to one question item within a form. Item responses can be accessed from
* FormResponse and created from any Item that asks the respondent to answer a
* question.
*
* // Open a form by ID and log the responses to each question.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var formResponses = form.getResponses();
* for (var i = 0; i < formResponses.length; i++) {
* var formResponse = formResponses[i];
* var itemResponses = formResponse.getItemResponses();
* for (var j = 0; j < itemResponses.length; j++) {
* var itemResponse = itemResponses[j];
* Logger.log('Response #%s to the question "%s" was "%s"',
* (i + 1).toString(),
* itemResponse.getItem().getTitle(),
* itemResponse.getResponse());
* }
* }
*/
export interface ItemResponse {
getItem(): Item;
getResponse(): Object;
}
/**
* An enum representing the supported types of form items. Item types can be accessed from
* FormApp.ItemType.
*
* // Open a form by ID and add a new section header.
* var form = FormApp.create('Form Name');
* var item = form.addSectionHeaderItem();
* item.setTitle('Title of new section');
*
* // Check the item type.
* if (item.getType() == FormApp.ItemType.SECTION_HEADER) {
* item.setHelpText('Description of new section.');
* }
*/
export enum ItemType { CHECKBOX, DATE, DATETIME, DURATION, GRID, IMAGE, LIST, MULTIPLE_CHOICE, PAGE_BREAK, PARAGRAPH_TEXT, SCALE, SECTION_HEADER, TEXT, TIME }
/**
* A question item that allows the respondent to select one choice from a drop-down list. Items can
* be accessed or created from a Form.
*
* // Open a form by ID and add a new list item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addListItem();
* item.setTitle('Do you prefer cats or dogs?')
* .setChoices([
* item.createChoice('Cats'),
* item.createChoice('Dogs')
* ]);
*/
export interface ListItem {
createChoice(value: string): Choice;
createChoice(value: string, navigationItem: PageBreakItem): Choice;
createChoice(value: string, navigationType: PageNavigationType): Choice;
createResponse(response: string): ItemResponse;
duplicate(): ListItem;
getChoices(): Choice[];
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
isRequired(): boolean;
setChoiceValues(values: String[]): ListItem;
setChoices(choices: Choice[]): ListItem;
setHelpText(text: string): ListItem;
setRequired(enabled: boolean): ListItem;
setTitle(title: string): ListItem;
}
/**
* A question item that allows the respondent to select one choice from a list of radio buttons or
* an optional "other" field. Items can be accessed or created from a Form.
*
* // Open a form by ID and add a new multiple choice item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addMultipleChoiceItem();
* item.setTitle('Do you prefer cats or dogs?')
* .setChoices([
* item.createChoice('Cats'),
* item.createChoice('Dogs')
* ])
* .showOtherOption(true);
*/
export interface MultipleChoiceItem {
createChoice(value: string): Choice;
createChoice(value: string, navigationItem: PageBreakItem): Choice;
createChoice(value: string, navigationType: PageNavigationType): Choice;
createResponse(response: string): ItemResponse;
duplicate(): MultipleChoiceItem;
getChoices(): Choice[];
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
hasOtherOption(): boolean;
isRequired(): boolean;
setChoiceValues(values: String[]): MultipleChoiceItem;
setChoices(choices: Choice[]): MultipleChoiceItem;
setHelpText(text: string): MultipleChoiceItem;
setRequired(enabled: boolean): MultipleChoiceItem;
setTitle(title: string): MultipleChoiceItem;
showOtherOption(enabled: boolean): MultipleChoiceItem;
}
/**
* A layout item that marks the start of a page. Items can be accessed or
* created from a Form.
*
* // Create a form and add three page-break items.
* var form = FormApp.create('Form Name');
* var pageTwo = form.addPageBreakItem().setTitle('Page Two');
* var pageThree = form.addPageBreakItem().setTitle('Page Three');
*
* // Make the first two pages navigate elsewhere upon completion.
* pageTwo.setGoToPage(pageThree); // At end of page one (start of page two), jump to page three
* pageThree.setGoToPage(FormApp.PageNavigationType.RESTART); // At end of page two, restart form
*/
export interface PageBreakItem {
duplicate(): PageBreakItem;
getGoToPage(): PageBreakItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getPageNavigationType(): PageNavigationType;
getTitle(): string;
getType(): ItemType;
setGoToPage(goToPageItem: PageBreakItem): PageBreakItem;
setGoToPage(navigationType: PageNavigationType): PageBreakItem;
setHelpText(text: string): PageBreakItem;
setTitle(title: string): PageBreakItem;
}
/**
* An enum representing the supported types of page navigation. Page navigation types can be
* accessed from FormApp.PageNavigationType.
*
* The page navigation occurs after the respondent completes a page that contains the option, and
* only if the respondent chose that option. If the respondent chose multiple options with
* page-navigation instructions on the same page, only the last navigation option has any effect.
* Page navigation also has no effect on the last page of a form.
* Choices that use page navigation cannot be combined in the same item with choices that do not
* use page navigation.
*
* // Create a form and add a new multiple-choice item and a page-break item.
* var form = FormApp.create('Form Name');
* var item = form.addMultipleChoiceItem();
* var pageBreak = form.addPageBreakItem();
*
* // Set some choices with go-to-page logic.
* var rightChoice = item.createChoice('Vanilla', FormApp.PageNavigationType.SUBMIT);
* var wrongChoice = item.createChoice('Chocolate', FormApp.PageNavigationType.RESTART);
*
* // For GO_TO_PAGE, just pass in the page break item. For CONTINUE (normally the default), pass in
* // CONTINUE explicitly because page navigation cannot be mixed with non-navigation choices.
* var iffyChoice = item.createChoice('Peanut', pageBreak);
* var otherChoice = item.createChoice('Strawberry', FormApp.PageNavigationType.CONTINUE);
* item.setChoices([rightChoice, wrongChoice, iffyChoice, otherChoice]);
*/
export enum PageNavigationType { CONTINUE, GO_TO_PAGE, RESTART, SUBMIT }
/**
* A question item that allows the respondent to enter a block of text. Items can be accessed or
* created from a Form.
*
* // Open a form by ID and add a new paragraph text item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addParagraphTextItem();
* item.setTitle('What is your address?');
*/
export interface ParagraphTextItem {
createResponse(response: string): ItemResponse;
duplicate(): ParagraphTextItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
isRequired(): boolean;
setHelpText(text: string): ParagraphTextItem;
setRequired(enabled: boolean): ParagraphTextItem;
setTitle(title: string): ParagraphTextItem;
}
/**
* A question item that allows the respondent to choose one option from a numbered sequence of radio
* buttons. Items can be accessed or created from a Form.
*
* // Open a form by ID and add a new scale item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addScaleItem();
* item.setTitle('Pick a number between 1 and 10')
* .setBounds(1, 10);
*/
export interface ScaleItem {
createResponse(response: Integer): ItemResponse;
duplicate(): ScaleItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getLeftLabel(): string;
getLowerBound(): Integer;
getRightLabel(): string;
getTitle(): string;
getType(): ItemType;
getUpperBound(): Integer;
isRequired(): boolean;
setBounds(lower: Integer, upper: Integer): ScaleItem;
setHelpText(text: string): ScaleItem;
setLabels(lower: string, upper: string): ScaleItem;
setRequired(enabled: boolean): ScaleItem;
setTitle(title: string): ScaleItem;
}
/**
* A layout item that visually indicates the start of a section. Items can be accessed or created
* from a Form.
*
* // Open a form by ID and add a new section header.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addSectionHeaderItem();
* item.setTitle('Title of new section');
*/
export interface SectionHeaderItem {
duplicate(): SectionHeaderItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
setHelpText(text: string): SectionHeaderItem;
setTitle(title: string): SectionHeaderItem;
}
/**
* A question item that allows the respondent to enter a single line of text. Items can be accessed
* or created from a Form.
*
* // Open a form by ID and add a new text item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addTextItem();
* item.setTitle('What is your name?');
*/
export interface TextItem {
createResponse(response: string): ItemResponse;
duplicate(): TextItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
isRequired(): boolean;
setHelpText(text: string): TextItem;
setRequired(enabled: boolean): TextItem;
setTitle(title: string): TextItem;
}
/**
* A question item that allows the respondent to indicate a time of day. Items can be accessed or
* created from a Form.
*
* // Open a form by ID and add a new time item.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* var item = form.addTimeItem();
* item.setTitle('What time do you usually wake up in the morning?');
*/
export interface TimeItem {
createResponse(hour: Integer, minute: Integer): ItemResponse;
duplicate(): TimeItem;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
isRequired(): boolean;
setHelpText(text: string): TimeItem;
setRequired(enabled: boolean): TimeItem;
setTitle(title: string): TimeItem;
}
/**
* A layout item that displays a video. Items can be accessed or created from a Form.
*
* // Open a form by ID and add three new video items, using a long URL,
* // a short URL, and a video ID.
* var form = FormApp.openById('1234567890abcdefghijklmnopqrstuvwxyz');
* form.addVideoItem()
* .setTitle('Video Title')
* .setHelpText('Video Caption')
* .setVideoUrl('www.youtube.com/watch?v=1234abcdxyz');
*
* form.addVideoItem()
* .setTitle('Video Title')
* .setHelpText('Video Caption')
* .setVideoUrl('youtu.be/1234abcdxyz');
*
* form.addVideoItem()
* .setTitle('Video Title')
* .setHelpText('Video Caption')
* .setVideoUrl('1234abcdxyz');
*/
export interface VideoItem {
duplicate(): VideoItem;
getAlignment(): Alignment;
getHelpText(): string;
getId(): Integer;
getIndex(): Integer;
getTitle(): string;
getType(): ItemType;
getWidth(): Integer;
setAlignment(alignment: Alignment): VideoItem;
setHelpText(text: string): VideoItem;
setTitle(title: string): VideoItem;
setVideoUrl(youtubeUrl: string): VideoItem;
setWidth(width: Integer): VideoItem;
}
}
}
declare var FormApp: GoogleAppsScript.Forms.FormApp;
+200
View File
@@ -0,0 +1,200 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Gmail {
/**
* Provides access to Gmail threads, messages, and labels.
*/
export interface GmailApp {
createLabel(name: string): GmailLabel;
deleteLabel(label: GmailLabel): GmailApp;
getAliases(): String[];
getChatThreads(): GmailThread[];
getChatThreads(start: Integer, max: Integer): GmailThread[];
getDraftMessages(): GmailMessage[];
getInboxThreads(): GmailThread[];
getInboxThreads(start: Integer, max: Integer): GmailThread[];
getInboxUnreadCount(): Integer;
getMessageById(id: string): GmailMessage;
getMessagesForThread(thread: GmailThread): GmailMessage[];
getMessagesForThreads(threads: GmailThread[]): GmailMessage[][];
getPriorityInboxThreads(): GmailThread[];
getPriorityInboxThreads(start: Integer, max: Integer): GmailThread[];
getPriorityInboxUnreadCount(): Integer;
getSpamThreads(): GmailThread[];
getSpamThreads(start: Integer, max: Integer): GmailThread[];
getSpamUnreadCount(): Integer;
getStarredThreads(): GmailThread[];
getStarredThreads(start: Integer, max: Integer): GmailThread[];
getStarredUnreadCount(): Integer;
getThreadById(id: string): GmailThread;
getTrashThreads(): GmailThread[];
getTrashThreads(start: Integer, max: Integer): GmailThread[];
getUserLabelByName(name: string): GmailLabel;
getUserLabels(): GmailLabel[];
markMessageRead(message: GmailMessage): GmailApp;
markMessageUnread(message: GmailMessage): GmailApp;
markMessagesRead(messages: GmailMessage[]): GmailApp;
markMessagesUnread(messages: GmailMessage[]): GmailApp;
markThreadImportant(thread: GmailThread): GmailApp;
markThreadRead(thread: GmailThread): GmailApp;
markThreadUnimportant(thread: GmailThread): GmailApp;
markThreadUnread(thread: GmailThread): GmailApp;
markThreadsImportant(threads: GmailThread[]): GmailApp;
markThreadsRead(threads: GmailThread[]): GmailApp;
markThreadsUnimportant(threads: GmailThread[]): GmailApp;
markThreadsUnread(threads: GmailThread[]): GmailApp;
moveMessageToTrash(message: GmailMessage): GmailApp;
moveMessagesToTrash(messages: GmailMessage[]): GmailApp;
moveThreadToArchive(thread: GmailThread): GmailApp;
moveThreadToInbox(thread: GmailThread): GmailApp;
moveThreadToSpam(thread: GmailThread): GmailApp;
moveThreadToTrash(thread: GmailThread): GmailApp;
moveThreadsToArchive(threads: GmailThread[]): GmailApp;
moveThreadsToInbox(threads: GmailThread[]): GmailApp;
moveThreadsToSpam(threads: GmailThread[]): GmailApp;
moveThreadsToTrash(threads: GmailThread[]): GmailApp;
refreshMessage(message: GmailMessage): GmailApp;
refreshMessages(messages: GmailMessage[]): GmailApp;
refreshThread(thread: GmailThread): GmailApp;
refreshThreads(threads: GmailThread[]): GmailApp;
search(query: string): GmailThread[];
search(query: string, start: Integer, max: Integer): GmailThread[];
sendEmail(recipient: string, subject: string, body: string): GmailApp;
sendEmail(recipient: string, subject: string, body: string, options: Object): GmailApp;
starMessage(message: GmailMessage): GmailApp;
starMessages(messages: GmailMessage[]): GmailApp;
unstarMessage(message: GmailMessage): GmailApp;
unstarMessages(messages: GmailMessage[]): GmailApp;
}
/**
* An attachment from Gmail. This is a regular
* Blob except that it has an extra
* getSize() method that is faster than calling getBytes().length and does
* not count against the Gmail read quota.
*
* // Logs information about any attachments in the first 100 inbox threads.
* var threads = GmailApp.getInboxThreads(0, 100);
* var msgs = GmailApp.getMessagesForThreads(threads);
* for (var i = 0 ; i < msgs.length; i++) {
* for (var j = 0; j < msgs[i].length; j++) {
* var attachments = msgs[i][j].getAttachments();
* for (var k = 0; k < attachments.length; k++) {
* Logger.log('Message "%s" contains the attachment "%s" (%s bytes)',
* msgs[i][j].getSubject(), attachments[k].getName(), attachments[k].getSize());
* }
* }
* }
*/
export interface GmailAttachment {
copyBlob(): Base.Blob;
getAs(contentType: string): Base.Blob;
getBytes(): Byte[];
getContentType(): string;
getDataAsString(): string;
getDataAsString(charset: string): string;
getName(): string;
getSize(): Integer;
isGoogleType(): boolean;
setBytes(data: Byte[]): Base.Blob;
setContentType(contentType: string): Base.Blob;
setContentTypeFromExtension(): Base.Blob;
setDataFromString(string: string): Base.Blob;
setDataFromString(string: string, charset: string): Base.Blob;
setName(name: string): Base.Blob;
getAllBlobs(): Base.Blob[];
}
/**
* A user-created label in a user's Gmail account.
*/
export interface GmailLabel {
addToThread(thread: GmailThread): GmailLabel;
addToThreads(threads: GmailThread[]): GmailLabel;
deleteLabel(): void;
getName(): string;
getThreads(): GmailThread[];
getThreads(start: Integer, max: Integer): GmailThread[];
getUnreadCount(): Integer;
removeFromThread(thread: GmailThread): GmailLabel;
removeFromThreads(threads: GmailThread[]): GmailLabel;
}
/**
* A message in a user's Gmail account.
*/
export interface GmailMessage {
forward(recipient: string): GmailMessage;
forward(recipient: string, options: Object): GmailMessage;
getAttachments(): GmailAttachment[];
getBcc(): string;
getBody(): string;
getCc(): string;
getDate(): Date;
getFrom(): string;
getId(): string;
getPlainBody(): string;
getRawContent(): string;
getReplyTo(): string;
getSubject(): string;
getThread(): GmailThread;
getTo(): string;
isDraft(): boolean;
isInChats(): boolean;
isInInbox(): boolean;
isInTrash(): boolean;
isStarred(): boolean;
isUnread(): boolean;
markRead(): GmailMessage;
markUnread(): GmailMessage;
moveToTrash(): GmailMessage;
refresh(): GmailMessage;
reply(body: string): GmailMessage;
reply(body: string, options: Object): GmailMessage;
replyAll(body: string): GmailMessage;
replyAll(body: string, options: Object): GmailMessage;
star(): GmailMessage;
unstar(): GmailMessage;
}
/**
* A thread in a user's Gmail account.
*/
export interface GmailThread {
addLabel(label: GmailLabel): GmailThread;
getFirstMessageSubject(): string;
getId(): string;
getLabels(): GmailLabel[];
getLastMessageDate(): Date;
getMessageCount(): Integer;
getMessages(): GmailMessage[];
getPermalink(): string;
hasStarredMessages(): boolean;
isImportant(): boolean;
isInChats(): boolean;
isInInbox(): boolean;
isInSpam(): boolean;
isInTrash(): boolean;
isUnread(): boolean;
markImportant(): GmailThread;
markRead(): GmailThread;
markUnimportant(): GmailThread;
markUnread(): GmailThread;
moveToArchive(): GmailThread;
moveToInbox(): GmailThread;
moveToSpam(): GmailThread;
moveToTrash(): GmailThread;
refresh(): GmailThread;
removeLabel(label: GmailLabel): GmailThread;
reply(body: string): GmailThread;
reply(body: string, options: Object): GmailThread;
replyAll(body: string): GmailThread;
replyAll(body: string, options: Object): GmailThread;
}
}
}
declare var GmailApp: GoogleAppsScript.Gmail.GmailApp;
+62
View File
@@ -0,0 +1,62 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Groups {
/**
* A group object whose members and those members' roles within the group
* can be queried.
*
* Here's an example which shows the members of a group. Before running it,
* replace the email address of the group with that of one on your domain.
*
* function listGroupMembers() {
* var group = GroupsApp.getGroupByEmail("example@googlegroups.com");
* var s = group.getEmail() + ': ';
* var users = group.getUsers();
* for (var i = 0; i < users.length; i++) {
* var user = users[i];
* s = s + user.getEmail() + ", ";
* }
* Logger.log(s);
* }
*/
export interface Group {
getEmail(): string;
getRole(email: string): Role;
getRole(user: Base.User): Role;
getUsers(): Base.User[];
hasUser(email: string): boolean;
hasUser(user: Base.User): boolean;
}
/**
* This class provides access to Google Groups information. It can be used to
* query information such as a group's email address, or the list of groups in
* which the user is a direct member.
*
* Here's an example that shows how many groups the current user is a member of:
*
* var groups = GroupsApp.getGroups();
* Logger.log('You belong to ' + groups.length + ' groups.');
*/
export interface GroupsApp {
Role: Role
getGroupByEmail(email: string): Group;
getGroups(): Group[];
}
/**
* Possible roles of a user within a group, such as owner or ordinary member.
* Users subscribed to a group have exactly one role within the context of that
* group.
* See also
*
* Group.getRole(email)
*/
export enum Role { OWNER, MANAGER, MEMBER, INVITED, PENDING }
}
}
declare var GroupsApp: GoogleAppsScript.Groups.GroupsApp;
+103
View File
@@ -0,0 +1,103 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module HTML {
/**
* An HtmlOutput object that can be served from a script. Due to security considerations,
* scripts cannot directly return HTML to a browser. Instead, they must sanitize it so that it
* cannot perform malicious actions. You can return sanitized HTML like this:
*
* function doGet() {
* return HtmlService.createHtmlOutput('<b>Hello, world!</b>');
* }
*
* HtmlOutput
* Google Caja
* guide to restrictions in HTML service
*/
export interface HtmlOutput {
append(addedContent: string): HtmlOutput;
appendUntrusted(addedContent: string): HtmlOutput;
asTemplate(): HtmlTemplate;
clear(): HtmlOutput;
getAs(contentType: string): Base.Blob;
getBlob(): Base.Blob;
getContent(): string;
getHeight(): Integer;
getTitle(): string;
getWidth(): Integer;
setContent(content: string): HtmlOutput;
setHeight(height: Integer): HtmlOutput;
setSandboxMode(mode: SandboxMode): HtmlOutput;
setTitle(title: string): HtmlOutput;
setWidth(width: Integer): HtmlOutput;
}
/**
* Service for returning HTML and other text content from a script.
*
* Due to security considerations, scripts cannot directly return content to a browser. Instead,
* they must sanitize the HTML so that it cannot perform malicious actions. See the description of
* HtmlOutput for what limitations this implies on what can be returned.
*/
export interface HtmlService {
SandboxMode: SandboxMode
createHtmlOutput(): HtmlOutput;
createHtmlOutput(blob: Base.BlobSource): HtmlOutput;
createHtmlOutput(html: string): HtmlOutput;
createHtmlOutputFromFile(filename: string): HtmlOutput;
createTemplate(blob: Base.BlobSource): HtmlTemplate;
createTemplate(html: string): HtmlTemplate;
createTemplateFromFile(filename: string): HtmlTemplate;
getUserAgent(): string;
}
/**
* A template object for dynamically constructing HTML. For more information, see the
* guide to templates.
*/
export interface HtmlTemplate {
evaluate(): HtmlOutput;
getCode(): string;
getCodeWithComments(): string;
getRawContent(): string;
}
/**
* An enum representing the sandbox modes that can be used for client-side HtmlService
* scripts. These values can be accessed from HtmlService.SandboxMode, and set by calling
* HtmlOutput.setSandboxMode(mode).
*
* To protect users from being served malicious HTML or JavaScript, client-side code served from
* HTML service executes in a security sandbox that imposes restrictions on the code. The method
* HtmlOutput.setSandboxMode(mode) allows script authors to choose between
* different versions of the sandbox. For more information, see the
* guide to restrictions in HTML service.
* If a script does not set a sandbox mode, Apps Script uses NATIVE mode as the default.
* Prior to February 2014, the default was EMULATED. The default is subject to change.
* The IFRAME mode imposes many fewer restrictions than the other sandbox modes and runs
* fastest, but does not work at all in certain older browsers, including Internet Explorer 9. By
* contrast, EMULATED mode is more likely to work in
* older browsers that do not support ECMAScript 5 strict
* mode, most notably Internet Explorer 9. NATIVE mode is the middle ground. If
* NATIVE mode is set but not supported in the user's browser, the sandbox mode falls back
* to EMULATED mode for that user.
*
* // Serve HTML with a defined sandbox mode (in Apps Script server-side code).
* var output = HtmlService.createHtmlOutput('<b>Hello, world!</b>');
* output.setSandboxMode(HtmlService.SandboxMode.IFRAME);
*
* google.script.sandbox.mode
*
* <!-- Read the sandbox mode (in a client-side script). -->
* <script>
* alert(google.script.sandbox.mode);
* </script>
*/
export enum SandboxMode { EMULATED, IFRAME, NATIVE }
}
}
declare var HtmlService: GoogleAppsScript.HTML.HtmlService;
+897
View File
@@ -0,0 +1,897 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module JDBC {
/**
* The JDBC service allows scripts to connect to Google Cloud SQL, MySQL,
* Microsoft SQL Server, and Oracle databases. For more information, see the
* guide to JDBC.
*/
export interface Jdbc {
getCloudSqlConnection(url: string): JdbcConnection;
getCloudSqlConnection(url: string, info: Object): JdbcConnection;
getCloudSqlConnection(url: string, userName: string, password: string): JdbcConnection;
getConnection(url: string): JdbcConnection;
getConnection(url: string, info: Object): JdbcConnection;
getConnection(url: string, userName: string, password: string): JdbcConnection;
newDate(milliseconds: Integer): JdbcDate;
newTime(milliseconds: Integer): JdbcTime;
newTimestamp(milliseconds: Integer): JdbcTimestamp;
parseDate(date: string): JdbcDate;
parseTime(time: string): JdbcTime;
parseTimestamp(timestamp: string): JdbcTimestamp;
}
/**
* A JDBC Array. For documentation of this class, see java.sql.Array.
*/
export interface JdbcArray {
free(): void;
getArray(): Object;
getArray(index: Integer, count: Integer): Object;
getBaseType(): Integer;
getBaseTypeName(): string;
getResultSet(): JdbcResultSet;
getResultSet(index: Integer, count: Integer): JdbcResultSet;
}
/**
* A JDBC Blob. For documentation of this class, see java.sql.Blob.
*/
export interface JdbcBlob {
free(): void;
getAppsScriptBlob(): Base.Blob;
getAs(contentType: string): Base.Blob;
getBytes(position: Integer, length: Integer): Byte[];
length(): Integer;
position(pattern: Byte[], start: Integer): Integer;
position(pattern: JdbcBlob, start: Integer): Integer;
setBytes(position: Integer, blobSource: Base.BlobSource): Integer;
setBytes(position: Integer, blobSource: Base.BlobSource, offset: Integer, length: Integer): Integer;
setBytes(position: Integer, bytes: Byte[]): Integer;
setBytes(position: Integer, bytes: Byte[], offset: Integer, length: Integer): Integer;
truncate(length: Integer): void;
}
/**
* A JDBC CallableStatement. For documentation of this class, see
* java.sql.CallableStatement.
* See also
*
* CallableStatement
*/
export interface JdbcCallableStatement {
addBatch(): void;
addBatch(sql: string): void;
cancel(): void;
clearBatch(): void;
clearParameters(): void;
clearWarnings(): void;
close(): void;
execute(): boolean;
execute(sql: string): boolean;
execute(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): boolean;
execute(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): boolean;
execute(sql: string, columnNames: String[]): boolean;
executeBatch(): Integer[];
executeQuery(): JdbcResultSet;
executeQuery(sql: string): JdbcResultSet;
executeUpdate(): Integer;
executeUpdate(sql: string): Integer;
executeUpdate(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): Integer;
executeUpdate(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): Integer;
executeUpdate(sql: string, columnNames: String[]): Integer;
getArray(parameterIndex: Integer): JdbcArray;
getArray(parameterName: string): JdbcArray;
getBigDecimal(parameterIndex: Integer): BigNumber;
getBigDecimal(parameterName: string): BigNumber;
getBlob(parameterIndex: Integer): JdbcBlob;
getBlob(parameterName: string): JdbcBlob;
getBoolean(parameterIndex: Integer): boolean;
getBoolean(parameterName: string): boolean;
getByte(parameterIndex: Integer): Byte;
getByte(parameterName: string): Byte;
getBytes(parameterIndex: Integer): Byte[];
getBytes(parameterName: string): Byte[];
getClob(parameterIndex: Integer): JdbcClob;
getClob(parameterName: string): JdbcClob;
getConnection(): JdbcConnection;
getDate(parameterIndex: Integer): JdbcDate;
getDate(parameterIndex: Integer, timeZone: string): JdbcDate;
getDate(parameterName: string): JdbcDate;
getDate(parameterName: string, timeZone: string): JdbcDate;
getDouble(parameterIndex: Integer): Number;
getDouble(parameterName: string): Number;
getFetchDirection(): Integer;
getFetchSize(): Integer;
getFloat(parameterIndex: Integer): Number;
getFloat(parameterName: string): Number;
getGeneratedKeys(): JdbcResultSet;
getInt(parameterIndex: Integer): Integer;
getInt(parameterName: string): Integer;
getLong(parameterIndex: Integer): Integer;
getLong(parameterName: string): Integer;
getMaxFieldSize(): Integer;
getMaxRows(): Integer;
getMetaData(): JdbcResultSetMetaData;
getMoreResults(): boolean;
getMoreResults(current: Integer): boolean;
getNClob(parameterIndex: Integer): JdbcClob;
getNClob(parameterName: string): JdbcClob;
getNString(parameterIndex: Integer): string;
getNString(parameterName: string): string;
getObject(parameterIndex: Integer): Object;
getObject(parameterName: string): Object;
getParameterMetaData(): JdbcParameterMetaData;
getQueryTimeout(): Integer;
getRef(parameterIndex: Integer): JdbcRef;
getRef(parameterName: string): JdbcRef;
getResultSet(): JdbcResultSet;
getResultSetConcurrency(): Integer;
getResultSetHoldability(): Integer;
getResultSetType(): Integer;
getRowId(parameterIndex: Integer): JdbcRowId;
getRowId(parameterName: string): JdbcRowId;
getSQLXML(parameterIndex: Integer): JdbcSQLXML;
getSQLXML(parameterName: string): JdbcSQLXML;
getShort(parameterIndex: Integer): Integer;
getShort(parameterName: string): Integer;
getString(parameterIndex: Integer): string;
getString(parameterName: string): string;
getTime(parameterIndex: Integer): JdbcTime;
getTime(parameterIndex: Integer, timeZone: string): JdbcTime;
getTime(parameterName: string): JdbcTime;
getTime(parameterName: string, timeZone: string): JdbcTime;
getTimestamp(parameterIndex: Integer): JdbcTimestamp;
getTimestamp(parameterIndex: Integer, timeZone: string): JdbcTimestamp;
getTimestamp(parameterName: string): JdbcTimestamp;
getTimestamp(parameterName: string, timeZone: string): JdbcTimestamp;
getURL(parameterIndex: Integer): string;
getURL(parameterName: string): string;
getUpdateCount(): Integer;
getWarnings(): String[];
isClosed(): boolean;
isPoolable(): boolean;
registerOutParameter(parameterIndex: Integer, sqlType: Integer): void;
registerOutParameter(parameterIndex: Integer, sqlType: Integer, scale: Integer): void;
registerOutParameter(parameterIndex: Integer, sqlType: Integer, typeName: string): void;
registerOutParameter(parameterName: string, sqlType: Integer): void;
registerOutParameter(parameterName: string, sqlType: Integer, scale: Integer): void;
registerOutParameter(parameterName: string, sqlType: Integer, typeName: string): void;
setArray(parameterIndex: Integer, x: JdbcArray): void;
setBigDecimal(parameterIndex: Integer, x: BigNumber): void;
setBigDecimal(parameterName: string, x: BigNumber): void;
setBlob(parameterIndex: Integer, x: JdbcBlob): void;
setBlob(parameterName: string, x: JdbcBlob): void;
setBoolean(parameterIndex: Integer, x: boolean): void;
setBoolean(parameterName: string, x: boolean): void;
setByte(parameterIndex: Integer, x: Byte): void;
setByte(parameterName: string, x: Byte): void;
setBytes(parameterIndex: Integer, x: Byte[]): void;
setBytes(parameterName: string, x: Byte[]): void;
setClob(parameterIndex: Integer, x: JdbcClob): void;
setClob(parameterName: string, x: JdbcClob): void;
setCursorName(name: string): void;
setDate(parameterIndex: Integer, x: JdbcDate): void;
setDate(parameterIndex: Integer, x: JdbcDate, timeZone: string): void;
setDate(parameterName: string, x: JdbcDate): void;
setDate(parameterName: string, x: JdbcDate, timeZone: string): void;
setDouble(parameterIndex: Integer, x: Number): void;
setDouble(parameterName: string, x: Number): void;
setEscapeProcessing(enable: boolean): void;
setFetchDirection(direction: Integer): void;
setFetchSize(rows: Integer): void;
setFloat(parameterIndex: Integer, x: Number): void;
setFloat(parameterName: string, x: Number): void;
setInt(parameterIndex: Integer, x: Integer): void;
setInt(parameterName: string, x: Integer): void;
setLong(parameterIndex: Integer, x: Integer): void;
setLong(parameterName: string, x: Integer): void;
setMaxFieldSize(max: Integer): void;
setMaxRows(max: Integer): void;
setNClob(parameterIndex: Integer, x: JdbcClob): void;
setNClob(parameterName: string, value: JdbcClob): void;
setNString(parameterIndex: Integer, x: string): void;
setNString(parameterName: string, value: string): void;
setNull(parameterIndex: Integer, sqlType: Integer): void;
setNull(parameterIndex: Integer, sqlType: Integer, typeName: string): void;
setNull(parameterName: string, sqlType: Integer): void;
setNull(parameterName: string, sqlType: Integer, typeName: string): void;
setObject(index: Integer, x: Object): void;
setObject(parameterIndex: Integer, x: Object, targetSqlType: Integer): void;
setObject(parameterIndex: Integer, x: Object, targetSqlType: Integer, scaleOrLength: Integer): void;
setObject(parameterName: string, x: Object): void;
setObject(parameterName: string, x: Object, targetSqlType: Integer): void;
setObject(parameterName: string, x: Object, targetSqlType: Integer, scale: Integer): void;
setPoolable(poolable: boolean): void;
setQueryTimeout(seconds: Integer): void;
setRef(parameterIndex: Integer, x: JdbcRef): void;
setRowId(parameterIndex: Integer, x: JdbcRowId): void;
setRowId(parameterName: string, x: JdbcRowId): void;
setSQLXML(parameterIndex: Integer, x: JdbcSQLXML): void;
setSQLXML(parameterName: string, xmlObject: JdbcSQLXML): void;
setShort(parameterIndex: Integer, x: Integer): void;
setShort(parameterName: string, x: Integer): void;
setString(parameterIndex: Integer, x: string): void;
setString(parameterName: string, x: string): void;
setTime(parameterIndex: Integer, x: JdbcTime): void;
setTime(parameterIndex: Integer, x: JdbcTime, timeZone: string): void;
setTime(parameterName: string, x: JdbcTime): void;
setTime(parameterName: string, x: JdbcTime, timeZone: string): void;
setTimestamp(parameterIndex: Integer, x: JdbcTimestamp): void;
setTimestamp(parameterIndex: Integer, x: JdbcTimestamp, timeZone: string): void;
setTimestamp(parameterName: string, x: JdbcTimestamp): void;
setTimestamp(parameterName: string, x: JdbcTimestamp, timeZone: string): void;
setURL(parameterIndex: Integer, x: string): void;
setURL(parameterName: string, val: string): void;
wasNull(): boolean;
}
/**
* A JDBC Clob. For documentation of this class, see java.sql.Clob.
*/
export interface JdbcClob {
free(): void;
getAppsScriptBlob(): Base.Blob;
getAs(contentType: string): Base.Blob;
getSubString(position: Integer, length: Integer): string;
length(): Integer;
position(search: JdbcClob, start: Integer): Integer;
position(search: string, start: Integer): Integer;
setString(position: Integer, blobSource: Base.BlobSource): Integer;
setString(position: Integer, blobSource: Base.BlobSource, offset: Integer, len: Integer): Integer;
setString(position: Integer, value: string): Integer;
setString(position: Integer, value: string, offset: Integer, len: Integer): Integer;
truncate(length: Integer): void;
}
/**
* A JDBC Connection. For documentation of this class, see java.sql.Connection.
*/
export interface JdbcConnection {
clearWarnings(): void;
close(): void;
commit(): void;
createArrayOf(typeName: string, elements: Object[]): JdbcArray;
createBlob(): JdbcBlob;
createClob(): JdbcClob;
createNClob(): JdbcClob;
createSQLXML(): JdbcSQLXML;
createStatement(): JdbcStatement;
createStatement(resultSetType: Integer, resultSetConcurrency: Integer): JdbcStatement;
createStatement(resultSetType: Integer, resultSetConcurrency: Integer, resultSetHoldability: Integer): JdbcStatement;
createStruct(typeName: string, attributes: Object[]): JdbcStruct;
getAutoCommit(): boolean;
getCatalog(): string;
getHoldability(): Integer;
getMetaData(): JdbcDatabaseMetaData;
getTransactionIsolation(): Integer;
getWarnings(): String[];
isClosed(): boolean;
isReadOnly(): boolean;
isValid(timeout: Integer): boolean;
nativeSQL(sql: string): string;
prepareCall(sql: string): JdbcCallableStatement;
prepareCall(sql: string, resultSetType: Integer, resultSetConcurrency: Integer): JdbcCallableStatement;
prepareCall(sql: string, resultSetType: Integer, resultSetConcurrency: Integer, resultSetHoldability: Integer): JdbcCallableStatement;
prepareStatement(sql: string): JdbcPreparedStatement;
prepareStatement(sql: string, autoGeneratedKeys: Integer): JdbcPreparedStatement;
prepareStatement(sql: string, resultSetType: Integer, resultSetConcurrency: Integer): JdbcPreparedStatement;
prepareStatement(sql: string, resultSetType: Integer, resultSetConcurrency: Integer, resultSetHoldability: Integer): JdbcPreparedStatement;
prepareStatementByIndex(sql: string, indices: Integer[]): JdbcPreparedStatement;
prepareStatementByName(sql: string, columnNames: String[]): JdbcPreparedStatement;
releaseSavepoint(savepoint: JdbcSavepoint): void;
rollback(): void;
rollback(savepoint: JdbcSavepoint): void;
setAutoCommit(autoCommit: boolean): void;
setCatalog(catalog: string): void;
setHoldability(holdability: Integer): void;
setReadOnly(readOnly: boolean): void;
setSavepoint(): JdbcSavepoint;
setSavepoint(name: string): JdbcSavepoint;
setTransactionIsolation(level: Integer): void;
}
/**
* A JDBC DatabaseMetaData. For documentation of this class, see
* java.sql.DatabaseMetaData.
*/
export interface JdbcDatabaseMetaData {
allProceduresAreCallable(): boolean;
allTablesAreSelectable(): boolean;
autoCommitFailureClosesAllResultSets(): boolean;
dataDefinitionCausesTransactionCommit(): boolean;
dataDefinitionIgnoredInTransactions(): boolean;
deletesAreDetected(type: Integer): boolean;
doesMaxRowSizeIncludeBlobs(): boolean;
getAttributes(catalog: string, schemaPattern: string, typeNamePattern: string, attributeNamePattern: string): JdbcResultSet;
getBestRowIdentifier(catalog: string, schema: string, table: string, scope: Integer, nullable: boolean): JdbcResultSet;
getCatalogSeparator(): string;
getCatalogTerm(): string;
getCatalogs(): JdbcResultSet;
getClientInfoProperties(): JdbcResultSet;
getColumnPrivileges(catalog: string, schema: string, table: string, columnNamePattern: string): JdbcResultSet;
getColumns(catalog: string, schemaPattern: string, tableNamePattern: string, columnNamePattern: string): JdbcResultSet;
getConnection(): JdbcConnection;
getCrossReference(parentCatalog: string, parentSchema: string, parentTable: string, foreignCatalog: string, foreignSchema: string, foreignTable: string): JdbcResultSet;
getDatabaseMajorVersion(): Integer;
getDatabaseMinorVersion(): Integer;
getDatabaseProductName(): string;
getDatabaseProductVersion(): string;
getDefaultTransactionIsolation(): Integer;
getDriverMajorVersion(): Integer;
getDriverMinorVersion(): Integer;
getDriverName(): string;
getDriverVersion(): string;
getExportedKeys(catalog: string, schema: string, table: string): JdbcResultSet;
getExtraNameCharacters(): string;
getFunctionColumns(catalog: string, schemaPattern: string, functionNamePattern: string, columnNamePattern: string): JdbcResultSet;
getFunctions(catalog: string, schemaPattern: string, functionNamePattern: string): JdbcResultSet;
getIdentifierQuoteString(): string;
getImportedKeys(catalog: string, schema: string, table: string): JdbcResultSet;
getIndexInfo(catalog: string, schema: string, table: string, unique: boolean, approximate: boolean): JdbcResultSet;
getJDBCMajorVersion(): Integer;
getJDBCMinorVersion(): Integer;
getMaxBinaryLiteralLength(): Integer;
getMaxCatalogNameLength(): Integer;
getMaxCharLiteralLength(): Integer;
getMaxColumnNameLength(): Integer;
getMaxColumnsInGroupBy(): Integer;
getMaxColumnsInIndex(): Integer;
getMaxColumnsInOrderBy(): Integer;
getMaxColumnsInSelect(): Integer;
getMaxColumnsInTable(): Integer;
getMaxConnections(): Integer;
getMaxCursorNameLength(): Integer;
getMaxIndexLength(): Integer;
getMaxProcedureNameLength(): Integer;
getMaxRowSize(): Integer;
getMaxSchemaNameLength(): Integer;
getMaxStatementLength(): Integer;
getMaxStatements(): Integer;
getMaxTableNameLength(): Integer;
getMaxTablesInSelect(): Integer;
getMaxUserNameLength(): Integer;
getNumericFunctions(): string;
getPrimaryKeys(catalog: string, schema: string, table: string): JdbcResultSet;
getProcedureColumns(catalog: string, schemaPattern: string, procedureNamePattern: string, columnNamePattern: string): JdbcResultSet;
getProcedureTerm(): string;
getProcedures(catalog: string, schemaPattern: string, procedureNamePattern: string): JdbcResultSet;
getResultSetHoldability(): Integer;
getRowIdLifetime(): Integer;
getSQLKeywords(): string;
getSQLStateType(): Integer;
getSchemaTerm(): string;
getSchemas(): JdbcResultSet;
getSchemas(catalog: string, schemaPattern: string): JdbcResultSet;
getSearchStringEscape(): string;
getStringFunctions(): string;
getSuperTables(catalog: string, schemaPattern: string, tableNamePattern: string): JdbcResultSet;
getSuperTypes(catalog: string, schemaPattern: string, typeNamePattern: string): JdbcResultSet;
getSystemFunctions(): string;
getTablePrivileges(catalog: string, schemaPattern: string, tableNamePattern: string): JdbcResultSet;
getTableTypes(): JdbcResultSet;
getTables(catalog: string, schemaPattern: string, tableNamePattern: string, types: String[]): JdbcResultSet;
getTimeDateFunctions(): string;
getTypeInfo(): JdbcResultSet;
getUDTs(catalog: string, schemaPattern: string, typeNamePattern: string, types: Integer[]): JdbcResultSet;
getURL(): string;
getUserName(): string;
getVersionColumns(catalog: string, schema: string, table: string): JdbcResultSet;
insertsAreDetected(type: Integer): boolean;
isCatalogAtStart(): boolean;
isReadOnly(): boolean;
locatorsUpdateCopy(): boolean;
nullPlusNonNullIsNull(): boolean;
nullsAreSortedAtEnd(): boolean;
nullsAreSortedAtStart(): boolean;
nullsAreSortedHigh(): boolean;
nullsAreSortedLow(): boolean;
othersDeletesAreVisible(type: Integer): boolean;
othersInsertsAreVisible(type: Integer): boolean;
othersUpdatesAreVisible(type: Integer): boolean;
ownDeletesAreVisible(type: Integer): boolean;
ownInsertsAreVisible(type: Integer): boolean;
ownUpdatesAreVisible(type: Integer): boolean;
storesLowerCaseIdentifiers(): boolean;
storesLowerCaseQuotedIdentifiers(): boolean;
storesMixedCaseIdentifiers(): boolean;
storesMixedCaseQuotedIdentifiers(): boolean;
storesUpperCaseIdentifiers(): boolean;
storesUpperCaseQuotedIdentifiers(): boolean;
supportsANSI92EntryLevelSQL(): boolean;
supportsANSI92FullSQL(): boolean;
supportsANSI92IntermediateSQL(): boolean;
supportsAlterTableWithAddColumn(): boolean;
supportsAlterTableWithDropColumn(): boolean;
supportsBatchUpdates(): boolean;
supportsCatalogsInDataManipulation(): boolean;
supportsCatalogsInIndexDefinitions(): boolean;
supportsCatalogsInPrivilegeDefinitions(): boolean;
supportsCatalogsInProcedureCalls(): boolean;
supportsCatalogsInTableDefinitions(): boolean;
supportsColumnAliasing(): boolean;
supportsConvert(): boolean;
supportsConvert(fromType: Integer, toType: Integer): boolean;
supportsCoreSQLGrammar(): boolean;
supportsCorrelatedSubqueries(): boolean;
supportsDataDefinitionAndDataManipulationTransactions(): boolean;
supportsDataManipulationTransactionsOnly(): boolean;
supportsDifferentTableCorrelationNames(): boolean;
supportsExpressionsInOrderBy(): boolean;
supportsExtendedSQLGrammar(): boolean;
supportsFullOuterJoins(): boolean;
supportsGetGeneratedKeys(): boolean;
supportsGroupBy(): boolean;
supportsGroupByBeyondSelect(): boolean;
supportsGroupByUnrelated(): boolean;
supportsIntegrityEnhancementFacility(): boolean;
supportsLikeEscapeClause(): boolean;
supportsLimitedOuterJoins(): boolean;
supportsMinimumSQLGrammar(): boolean;
supportsMixedCaseIdentifiers(): boolean;
supportsMixedCaseQuotedIdentifiers(): boolean;
supportsMultipleOpenResults(): boolean;
supportsMultipleResultSets(): boolean;
supportsMultipleTransactions(): boolean;
supportsNamedParameters(): boolean;
supportsNonNullableColumns(): boolean;
supportsOpenCursorsAcrossCommit(): boolean;
supportsOpenCursorsAcrossRollback(): boolean;
supportsOpenStatementsAcrossCommit(): boolean;
supportsOpenStatementsAcrossRollback(): boolean;
supportsOrderByUnrelated(): boolean;
supportsOuterJoins(): boolean;
supportsPositionedDelete(): boolean;
supportsPositionedUpdate(): boolean;
supportsResultSetConcurrency(type: Integer, concurrency: Integer): boolean;
supportsResultSetHoldability(holdability: Integer): boolean;
supportsResultSetType(type: Integer): boolean;
supportsSavepoints(): boolean;
supportsSchemasInDataManipulation(): boolean;
supportsSchemasInIndexDefinitions(): boolean;
supportsSchemasInPrivilegeDefinitions(): boolean;
supportsSchemasInProcedureCalls(): boolean;
supportsSchemasInTableDefinitions(): boolean;
supportsSelectForUpdate(): boolean;
supportsStatementPooling(): boolean;
supportsStoredFunctionsUsingCallSyntax(): boolean;
supportsStoredProcedures(): boolean;
supportsSubqueriesInComparisons(): boolean;
supportsSubqueriesInExists(): boolean;
supportsSubqueriesInIns(): boolean;
supportsSubqueriesInQuantifieds(): boolean;
supportsTableCorrelationNames(): boolean;
supportsTransactionIsolationLevel(level: Integer): boolean;
supportsTransactions(): boolean;
supportsUnion(): boolean;
supportsUnionAll(): boolean;
updatesAreDetected(type: Integer): boolean;
usesLocalFilePerTable(): boolean;
usesLocalFiles(): boolean;
}
/**
* A JDBC Date. For documentation of this class, see java.sql.Date.
*/
export interface JdbcDate {
after(when: JdbcDate): boolean;
before(when: JdbcDate): boolean;
getDate(): Integer;
getMonth(): Integer;
getTime(): Integer;
getYear(): Integer;
setDate(date: Integer): void;
setMonth(month: Integer): void;
setTime(milliseconds: Integer): void;
setYear(year: Integer): void;
}
/**
* A JDBC ParameterMetaData. For documentation of this class, see
* java.sql.ParameterMetaData.
*/
export interface JdbcParameterMetaData {
getParameterClassName(param: Integer): string;
getParameterCount(): Integer;
getParameterMode(param: Integer): Integer;
getParameterType(param: Integer): Integer;
getParameterTypeName(param: Integer): string;
getPrecision(param: Integer): Integer;
getScale(param: Integer): Integer;
isNullable(param: Integer): Integer;
isSigned(param: Integer): boolean;
}
/**
* A JDBC PreparedStatement. For documentation of this class, see
* java.sql.PreparedStatement.
*/
export interface JdbcPreparedStatement {
addBatch(): void;
addBatch(sql: string): void;
cancel(): void;
clearBatch(): void;
clearParameters(): void;
clearWarnings(): void;
close(): void;
execute(): boolean;
execute(sql: string): boolean;
execute(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): boolean;
execute(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): boolean;
execute(sql: string, columnNames: String[]): boolean;
executeBatch(): Integer[];
executeQuery(): JdbcResultSet;
executeQuery(sql: string): JdbcResultSet;
executeUpdate(): Integer;
executeUpdate(sql: string): Integer;
executeUpdate(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): Integer;
executeUpdate(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): Integer;
executeUpdate(sql: string, columnNames: String[]): Integer;
getConnection(): JdbcConnection;
getFetchDirection(): Integer;
getFetchSize(): Integer;
getGeneratedKeys(): JdbcResultSet;
getMaxFieldSize(): Integer;
getMaxRows(): Integer;
getMetaData(): JdbcResultSetMetaData;
getMoreResults(): boolean;
getMoreResults(current: Integer): boolean;
getParameterMetaData(): JdbcParameterMetaData;
getQueryTimeout(): Integer;
getResultSet(): JdbcResultSet;
getResultSetConcurrency(): Integer;
getResultSetHoldability(): Integer;
getResultSetType(): Integer;
getUpdateCount(): Integer;
getWarnings(): String[];
isClosed(): boolean;
isPoolable(): boolean;
setArray(parameterIndex: Integer, x: JdbcArray): void;
setBigDecimal(parameterIndex: Integer, x: BigNumber): void;
setBlob(parameterIndex: Integer, x: JdbcBlob): void;
setBoolean(parameterIndex: Integer, x: boolean): void;
setByte(parameterIndex: Integer, x: Byte): void;
setBytes(parameterIndex: Integer, x: Byte[]): void;
setClob(parameterIndex: Integer, x: JdbcClob): void;
setCursorName(name: string): void;
setDate(parameterIndex: Integer, x: JdbcDate): void;
setDate(parameterIndex: Integer, x: JdbcDate, timeZone: string): void;
setDouble(parameterIndex: Integer, x: Number): void;
setEscapeProcessing(enable: boolean): void;
setFetchDirection(direction: Integer): void;
setFetchSize(rows: Integer): void;
setFloat(parameterIndex: Integer, x: Number): void;
setInt(parameterIndex: Integer, x: Integer): void;
setLong(parameterIndex: Integer, x: Integer): void;
setMaxFieldSize(max: Integer): void;
setMaxRows(max: Integer): void;
setNClob(parameterIndex: Integer, x: JdbcClob): void;
setNString(parameterIndex: Integer, x: string): void;
setNull(parameterIndex: Integer, sqlType: Integer): void;
setNull(parameterIndex: Integer, sqlType: Integer, typeName: string): void;
setObject(index: Integer, x: Object): void;
setObject(parameterIndex: Integer, x: Object, targetSqlType: Integer): void;
setObject(parameterIndex: Integer, x: Object, targetSqlType: Integer, scaleOrLength: Integer): void;
setPoolable(poolable: boolean): void;
setQueryTimeout(seconds: Integer): void;
setRef(parameterIndex: Integer, x: JdbcRef): void;
setRowId(parameterIndex: Integer, x: JdbcRowId): void;
setSQLXML(parameterIndex: Integer, x: JdbcSQLXML): void;
setShort(parameterIndex: Integer, x: Integer): void;
setString(parameterIndex: Integer, x: string): void;
setTime(parameterIndex: Integer, x: JdbcTime): void;
setTime(parameterIndex: Integer, x: JdbcTime, timeZone: string): void;
setTimestamp(parameterIndex: Integer, x: JdbcTimestamp): void;
setTimestamp(parameterIndex: Integer, x: JdbcTimestamp, timeZone: string): void;
setURL(parameterIndex: Integer, x: string): void;
}
/**
* A JDBC Ref. For documentation of this class, see java.sql.Ref.
*/
export interface JdbcRef {
getBaseTypeName(): string;
getObject(): Object;
setObject(object: Object): void;
}
/**
* A JDBC ResultSet. For documentation of this class, see java.sql.ResultSet.
*/
export interface JdbcResultSet {
absolute(row: Integer): boolean;
afterLast(): void;
beforeFirst(): void;
cancelRowUpdates(): void;
clearWarnings(): void;
close(): void;
deleteRow(): void;
findColumn(columnLabel: string): Integer;
first(): boolean;
getArray(columnIndex: Integer): JdbcArray;
getArray(columnLabel: string): JdbcArray;
getBigDecimal(columnIndex: Integer): BigNumber;
getBigDecimal(columnLabel: string): BigNumber;
getBlob(columnIndex: Integer): JdbcBlob;
getBlob(columnLabel: string): JdbcBlob;
getBoolean(columnIndex: Integer): boolean;
getBoolean(columnLabel: string): boolean;
getByte(columnIndex: Integer): Byte;
getByte(columnLabel: string): Byte;
getBytes(columnIndex: Integer): Byte[];
getBytes(columnLabel: string): Byte[];
getClob(columnIndex: Integer): JdbcClob;
getClob(columnLabel: string): JdbcClob;
getConcurrency(): Integer;
getCursorName(): string;
getDate(columnIndex: Integer): JdbcDate;
getDate(columnIndex: Integer, timeZone: string): JdbcDate;
getDate(columnLabel: string): JdbcDate;
getDate(columnLabel: string, timeZone: string): JdbcDate;
getDouble(columnIndex: Integer): Number;
getDouble(columnLabel: string): Number;
getFetchDirection(): Integer;
getFetchSize(): Integer;
getFloat(columnIndex: Integer): Number;
getFloat(columnLabel: string): Number;
getHoldability(): Integer;
getInt(columnIndex: Integer): Integer;
getInt(columnLabel: string): Integer;
getLong(columnIndex: Integer): Integer;
getLong(columnLabel: string): Integer;
getMetaData(): JdbcResultSetMetaData;
getNClob(columnIndex: Integer): JdbcClob;
getNClob(columnLabel: string): JdbcClob;
getNString(columnIndex: Integer): string;
getNString(columnLabel: string): string;
getObject(columnIndex: Integer): Object;
getObject(columnLabel: string): Object;
getRef(columnIndex: Integer): JdbcRef;
getRef(columnLabel: string): JdbcRef;
getRow(): Integer;
getRowId(columnIndex: Integer): JdbcRowId;
getRowId(columnLabel: string): JdbcRowId;
getSQLXML(columnIndex: Integer): JdbcSQLXML;
getSQLXML(columnLabel: string): JdbcSQLXML;
getShort(columnIndex: Integer): Integer;
getShort(columnLabel: string): Integer;
getStatement(): JdbcStatement;
getString(columnIndex: Integer): string;
getString(columnLabel: string): string;
getTime(columnIndex: Integer): JdbcTime;
getTime(columnIndex: Integer, timeZone: string): JdbcTime;
getTime(columnLabel: string): JdbcTime;
getTime(columnLabel: string, timeZone: string): JdbcTime;
getTimestamp(columnIndex: Integer): JdbcTimestamp;
getTimestamp(columnIndex: Integer, timeZone: string): JdbcTimestamp;
getTimestamp(columnLabel: string): JdbcTimestamp;
getTimestamp(columnLabel: string, timeZone: string): JdbcTimestamp;
getType(): Integer;
getURL(columnIndex: Integer): string;
getURL(columnLabel: string): string;
getWarnings(): String[];
insertRow(): void;
isAfterLast(): boolean;
isBeforeFirst(): boolean;
isClosed(): boolean;
isFirst(): boolean;
isLast(): boolean;
last(): boolean;
moveToCurrentRow(): void;
moveToInsertRow(): void;
next(): boolean;
previous(): boolean;
refreshRow(): void;
relative(rows: Integer): boolean;
rowDeleted(): boolean;
rowInserted(): boolean;
rowUpdated(): boolean;
setFetchDirection(direction: Integer): void;
setFetchSize(rows: Integer): void;
updateArray(columnIndex: Integer, x: JdbcArray): void;
updateArray(columnLabel: string, x: JdbcArray): void;
updateBigDecimal(columnIndex: Integer, x: BigNumber): void;
updateBigDecimal(columnLabel: string, x: BigNumber): void;
updateBlob(columnIndex: Integer, x: JdbcBlob): void;
updateBlob(columnLabel: string, x: JdbcBlob): void;
updateBoolean(columnIndex: Integer, x: boolean): void;
updateBoolean(columnLabel: string, x: boolean): void;
updateByte(columnIndex: Integer, x: Byte): void;
updateByte(columnLabel: string, x: Byte): void;
updateBytes(columnIndex: Integer, x: Byte[]): void;
updateBytes(columnLabel: string, x: Byte[]): void;
updateClob(columnIndex: Integer, x: JdbcClob): void;
updateClob(columnLabel: string, x: JdbcClob): void;
updateDate(columnIndex: Integer, x: JdbcDate): void;
updateDate(columnLabel: string, x: JdbcDate): void;
updateDouble(columnIndex: Integer, x: Number): void;
updateDouble(columnLabel: string, x: Number): void;
updateFloat(columnIndex: Integer, x: Number): void;
updateFloat(columnLabel: string, x: Number): void;
updateInt(columnIndex: Integer, x: Integer): void;
updateInt(columnLabel: string, x: Integer): void;
updateLong(columnIndex: Integer, x: Integer): void;
updateLong(columnLabel: string, x: Integer): void;
updateNClob(columnIndex: Integer, x: JdbcClob): void;
updateNClob(columnLabel: string, x: JdbcClob): void;
updateNString(columnIndex: Integer, x: string): void;
updateNString(columnLabel: string, x: string): void;
updateNull(columnIndex: Integer): void;
updateNull(columnLabel: string): void;
updateObject(columnIndex: Integer, x: Object): void;
updateObject(columnIndex: Integer, x: Object, scaleOrLength: Integer): void;
updateObject(columnLabel: string, x: Object): void;
updateObject(columnLabel: string, x: Object, scaleOrLength: Integer): void;
updateRef(columnIndex: Integer, x: JdbcRef): void;
updateRef(columnLabel: string, x: JdbcRef): void;
updateRow(): void;
updateRowId(columnIndex: Integer, x: JdbcRowId): void;
updateRowId(columnLabel: string, x: JdbcRowId): void;
updateSQLXML(columnIndex: Integer, x: JdbcSQLXML): void;
updateSQLXML(columnLabel: string, x: JdbcSQLXML): void;
updateShort(columnIndex: Integer, x: Integer): void;
updateShort(columnLabel: string, x: Integer): void;
updateString(columnIndex: Integer, x: string): void;
updateString(columnLabel: string, x: string): void;
updateTime(columnIndex: Integer, x: JdbcTime): void;
updateTime(columnLabel: string, x: JdbcTime): void;
updateTimestamp(columnIndex: Integer, x: JdbcTimestamp): void;
updateTimestamp(columnLabel: string, x: JdbcTimestamp): void;
wasNull(): boolean;
}
/**
* A JDBC ResultSetMetaData. For documentation of this class, see
* java.sql.ResultSetMetaData.
*/
export interface JdbcResultSetMetaData {
getCatalogName(column: Integer): string;
getColumnClassName(column: Integer): string;
getColumnCount(): Integer;
getColumnDisplaySize(column: Integer): Integer;
getColumnLabel(column: Integer): string;
getColumnName(column: Integer): string;
getColumnType(column: Integer): Integer;
getColumnTypeName(column: Integer): string;
getPrecision(column: Integer): Integer;
getScale(column: Integer): Integer;
getSchemaName(column: Integer): string;
getTableName(column: Integer): string;
isAutoIncrement(column: Integer): boolean;
isCaseSensitive(column: Integer): boolean;
isCurrency(column: Integer): boolean;
isDefinitelyWritable(column: Integer): boolean;
isNullable(column: Integer): Integer;
isReadOnly(column: Integer): boolean;
isSearchable(column: Integer): boolean;
isSigned(column: Integer): boolean;
isWritable(column: Integer): boolean;
}
/**
* A JDBC RowId. For documentation of this class, see java.sql.RowId.
*/
export interface JdbcRowId {
getBytes(): Byte[];
}
/**
* A JDBC SQLXML. For documentation of this class, see java.sql.SQLXML.
*/
export interface JdbcSQLXML {
free(): void;
getString(): string;
setString(value: string): void;
}
/**
* A JDBC Savepoint. For documentation of this class, see java.sql.Savepoint.
* See also
*
* Savepoint
*/
export interface JdbcSavepoint {
getSavepointId(): Integer;
getSavepointName(): string;
}
/**
* A JDBC Statement. For documentation of this class, see java.sql.Statement.
*/
export interface JdbcStatement {
addBatch(sql: string): void;
cancel(): void;
clearBatch(): void;
clearWarnings(): void;
close(): void;
execute(sql: string): boolean;
execute(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): boolean;
execute(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): boolean;
execute(sql: string, columnNames: String[]): boolean;
executeBatch(): Integer[];
executeQuery(sql: string): JdbcResultSet;
executeUpdate(sql: string): Integer;
executeUpdate(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): Integer;
executeUpdate(sql: string, autoGeneratedKeys: Integer, sql_: string, columnIndexes: Integer[]): Integer;
executeUpdate(sql: string, columnNames: String[]): Integer;
getConnection(): JdbcConnection;
getFetchDirection(): Integer;
getFetchSize(): Integer;
getGeneratedKeys(): JdbcResultSet;
getMaxFieldSize(): Integer;
getMaxRows(): Integer;
getMoreResults(): boolean;
getMoreResults(current: Integer): boolean;
getQueryTimeout(): Integer;
getResultSet(): JdbcResultSet;
getResultSetConcurrency(): Integer;
getResultSetHoldability(): Integer;
getResultSetType(): Integer;
getUpdateCount(): Integer;
getWarnings(): String[];
isClosed(): boolean;
isPoolable(): boolean;
setCursorName(name: string): void;
setEscapeProcessing(enable: boolean): void;
setFetchDirection(direction: Integer): void;
setFetchSize(rows: Integer): void;
setMaxFieldSize(max: Integer): void;
setMaxRows(max: Integer): void;
setPoolable(poolable: boolean): void;
setQueryTimeout(seconds: Integer): void;
}
/**
* A JDBC Struct. For documentation of this class, see java.sql.Struct.
*/
export interface JdbcStruct {
getAttributes(): Object[];
getSQLTypeName(): string;
}
/**
* A JDBC Time. For documentation of this class, see java.sql.Time.
*/
export interface JdbcTime {
after(when: JdbcTime): boolean;
before(when: JdbcTime): boolean;
getHours(): Integer;
getMinutes(): Integer;
getSeconds(): Integer;
getTime(): Integer;
setHours(hours: Integer): void;
setMinutes(minutes: Integer): void;
setSeconds(seconds: Integer): void;
setTime(milliseconds: Integer): void;
}
/**
* A JDBC Timestamp. For documentation of this class, see java.sql.Timestamp.
*/
export interface JdbcTimestamp {
after(when: JdbcTimestamp): boolean;
before(when: JdbcTimestamp): boolean;
getDate(): Integer;
getHours(): Integer;
getMinutes(): Integer;
getMonth(): Integer;
getNanos(): Integer;
getSeconds(): Integer;
getTime(): Integer;
getYear(): Integer;
setDate(date: Integer): void;
setHours(hours: Integer): void;
setMinutes(minutes: Integer): void;
setMonth(month: Integer): void;
setNanos(nanoseconds: Integer): void;
setSeconds(seconds: Integer): void;
setTime(milliseconds: Integer): void;
setYear(year: Integer): void;
}
}
}
declare var Jdbc: GoogleAppsScript.JDBC.Jdbc;
+20
View File
@@ -0,0 +1,20 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module Language {
/**
* The Language service provides scripts a way to compute automatic translations of text.
*
* // The code below will write "Esta es una prueba" to the log.
* var spanish = LanguageApp.translate('This is a test', 'en', 'es');
* Logger.log(spanish);
*/
export interface LanguageApp {
translate(text: string, sourceLanguage: string, targetLanguage: string): string;
translate(text: string, sourceLanguage: string, targetLanguage: string, advancedArgs: Object): string;
}
}
}
declare var LanguageApp: GoogleAppsScript.Language.LanguageApp;
+55
View File
@@ -0,0 +1,55 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module Lock {
/**
* A representation of a mutual-exclusion lock.
*
* This class allows scripts to make sure that only one instance of the script is executing a given
* section of code at a time. This is particularly useful for callbacks and triggers, where a user
* action may cause changes to a shared resource and you want to ensure that aren't collisions.
*
* The following examples shows how to use a lock in a form submit handler.
*
* // Generates a unique ticket number for every form submission.
* function onFormSubmit(e) {
* var targetCell = e.range.offset(0, e.range.getNumColumns(), 1, 1);
*
* // Get a script lock, because we're about to modify a shared resource.
* var lock = LockService.getScriptLock();
* // Wait for up to 30 seconds for other processes to finish.
* lock.waitLock(30000);
*
* var ticketNumber = Number(ScriptProperties.getProperty('lastTicketNumber')) + 1;
* ScriptProperties.setProperty('lastTicketNumber', ticketNumber);
*
* // Release the lock so that other processes can continue.
* lock.releaseLock();
*
* targetCell.setValue(ticketNumber);
* }
*
* lastTicketNumber
* ScriptProperties
*/
export interface Lock {
hasLock(): boolean;
releaseLock(): void;
tryLock(timeoutInMillis: Integer): boolean;
waitLock(timeoutInMillis: Integer): void;
}
/**
* Prevents concurrent access to sections of code. This can be useful when you have multiple users
* or processes modifying a shared resource and want to prevent collisions.
*/
export interface LockService {
getDocumentLock(): Lock;
getScriptLock(): Lock;
getUserLock(): Lock;
}
}
}
declare var LockService: GoogleAppsScript.Lock.LockService;
+26
View File
@@ -0,0 +1,26 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module Mail {
/**
* Sends email.
*
* This service allows users to send emails with complete control over the
* content of the email. Unlike GmailApp, MailApp's sole purpose is sending email. MailApp cannot
* access a user's Gmail inbox.
*
* Changes to scripts written using GmailApp are more likely to trigger a re-authorization
* request from a user than MailApp scripts.
*/
export interface MailApp {
getRemainingDailyQuota(): Integer;
sendEmail(message: Object): void;
sendEmail(recipient: string, subject: string, body: string): void;
sendEmail(recipient: string, subject: string, body: string, options: Object): void;
sendEmail(to: string, replyTo: string, subject: string, body: string): void;
}
}
}
declare var MailApp: GoogleAppsScript.Mail.MailApp;
+314
View File
@@ -0,0 +1,314 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Maps {
/**
* An enum representing the types of restrictions to avoid when finding directions.
*/
export enum Avoid { TOLLS, HIGHWAYS }
/**
* An enum representing the named colors available to use in map images.
*/
export enum Color { BLACK, BROWN, GREEN, PURPLE, YELLOW, BLUE, GRAY, ORANGE, RED, WHITE }
/**
* Allows for the retrieval of directions between locations.
*
* The example below shows how you can use this class to get the directions from Times Square to
* Central Park, stopping first at Lincoln Center, plot the locations and path on a map,
* and send the map in an email.
*
* // Get the directions.
* var directions = Maps.newDirectionFinder()
* .setOrigin('Times Square, New York, NY')
* .addWaypoint('Lincoln Center, New York, NY')
* .setDestination('Central Park, New York, NY')
* .setMode(Maps.DirectionFinder.Mode.DRIVING)
* .getDirections();
* var route = directions.routes[0];
*
* // Set up marker styles.
* var markerSize = Maps.StaticMap.MarkerSize.MID;
* var markerColor = Maps.StaticMap.Color.GREEN
* var markerLetterCode = 'A'.charCodeAt();
*
* // Add markers to the map.
* var map = Maps.newStaticMap();
* for (var i = 0; i < route.legs.length; i++) {
* var leg = route.legs[i];
* if (i == 0) {
* // Add a marker for the start location of the first leg only.
* map.setMarkerStyle(markerSize, markerColor, String.fromCharCode(markerLetterCode));
* map.addMarker(leg.start_location.lat, leg.start_location.lng);
* markerLetterCode++;
* }
* map.setMarkerStyle(markerSize, markerColor, String.fromCharCode(markerLetterCode));
* map.addMarker(leg.end_location.lat, leg.end_location.lng);
* markerLetterCode++;
* }
*
* // Add a path for the entire route.
* map.addPath(route.overview_polyline.points);
*
* // Send the map in an email.
* var toAddress = Session.getActiveUser().getEmail();
* MailApp.sendEmail(toAddress, 'Directions', 'Please open: ' + map.getMapUrl(), {
* htmlBody: 'See below.<br/><img src="cid:mapImage">',
* inlineImages: {
* mapImage: Utilities.newBlob(map.getMapImage(), 'image/png')
* }
* });
*
* See also
*
* Google Directions API
*/
export interface DirectionFinder {
addWaypoint(latitude: Number, longitude: Number): DirectionFinder;
addWaypoint(address: string): DirectionFinder;
clearWaypoints(): DirectionFinder;
getDirections(): Object;
setAlternatives(useAlternatives: boolean): DirectionFinder;
setArrive(time: Date): DirectionFinder;
setAvoid(avoid: string): DirectionFinder;
setDepart(time: Date): DirectionFinder;
setDestination(latitude: Number, longitude: Number): DirectionFinder;
setDestination(address: string): DirectionFinder;
setLanguage(language: string): DirectionFinder;
setMode(mode: string): DirectionFinder;
setOptimizeWaypoints(optimizeOrder: boolean): DirectionFinder;
setOrigin(latitude: Number, longitude: Number): DirectionFinder;
setOrigin(address: string): DirectionFinder;
setRegion(region: string): DirectionFinder;
}
/**
* A collection of enums used by DirectionFinder.
*/
export interface DirectionFinderEnums {
Avoid: Avoid
Mode: Mode
}
/**
* Allows for the sampling of elevations at particular locations.
*
* The example below shows how you can use this class to determine the highest point along the route
* from Denver to Grand Junction in Colorado, plot it on a map, and save the map to Google Drive.
*
* // Get directions from Denver to Grand Junction.
* var directions = Maps.newDirectionFinder()
* .setOrigin('Denver, CO')
* .setDestination('Grand Junction, CO')
* .setMode(Maps.DirectionFinder.Mode.DRIVING)
* .getDirections();
* var route = directions.routes[0];
*
* // Get elevation samples along the route.
* var numberOfSamples = 30;
* var response = Maps.newElevationSampler()
* .samplePath(route.overview_polyline.points, numberOfSamples)
*
* // Determine highest point.
* var maxElevation = Number.MIN_VALUE;
* var highestPoint = null;
* for (var i = 0; i < response.results.length; i++) {
* var sample = response.results[i];
* if (sample.elevation > maxElevation) {
* maxElevation = sample.elevation;
* highestPoint = sample.location;
* }
* }
*
* // Add the path and marker to a map.
* var map = Maps.newStaticMap()
* .addPath(route.overview_polyline.points)
* .addMarker(highestPoint.lat, highestPoint.lng);
*
* // Save the map to your drive
* DocsList.createFile(Utilities.newBlob(map.getMapImage(), 'image/png', 'map.png'));
*
* See also
*
* Google Elevation API
*/
export interface ElevationSampler {
sampleLocation(latitude: Number, longitude: Number): Object;
sampleLocations(points: Number[]): Object;
sampleLocations(encodedPolyline: string): Object;
samplePath(points: Number[], numSamples: Integer): Object;
samplePath(encodedPolyline: string, numSamples: Integer): Object;
}
/**
* An enum representing the format of the map image.
* See also
*
* Google Static Maps API
*/
export enum Format { PNG, PNG8, PNG32, GIF, JPG, JPG_BASELINE }
/**
* Allows for the conversion between an address and geographical coordinates.
*
* The example below shows how you can use this class find the top nine matches for the location
* "Main St" in Colorado, add them to a map, and then embed it in a new Google Doc.
*
* // Find the best matches for "Main St" in Colorado.
* var response = Maps.newGeocoder()
* // The latitudes and longitudes of southwest and northeast corners of Colorado, respectively.
* .setBounds(36.998166, -109.045486, 41.001666,-102.052002)
* .geocode('Main St');
*
* // Create a Google Doc and map.
* var doc = DocumentApp.create('My Map');
* var map = Maps.newStaticMap();
*
* // Add each result to the map and doc.
* for (var i = 0; i < response.results.length && i < 9; i++) {
* var result = response.results[i];
* map.setMarkerStyle(null, null, i + 1);
* map.addMarker(result.geometry.location.lat, result.geometry.location.lng);
* doc.appendListItem(result.formatted_address);
* }
*
* // Add the finished map to the doc.
* doc.appendImage(Utilities.newBlob(map.getMapImage(), 'image/png'));
*
* See also
*
* Google Geocoding API
*/
export interface Geocoder {
geocode(address: string): Object;
reverseGeocode(latitude: Number, longitude: Number): Object;
reverseGeocode(swLatitude: Number, swLongitude: Number, neLatitude: Number, neLongitude: Number): Object;
setBounds(swLatitude: Number, swLongitude: Number, neLatitude: Number, neLongitude: Number): Geocoder;
setLanguage(language: string): Geocoder;
setRegion(region: string): Geocoder;
}
/**
* Allows for direction finding, geocoding, elevation sampling and the creation of static map
* images.
*/
export interface Maps {
DirectionFinder: DirectionFinderEnums
StaticMap: StaticMapEnums
decodePolyline(polyline: string): Number[];
encodePolyline(points: Number[]): string;
newDirectionFinder(): DirectionFinder;
newElevationSampler(): ElevationSampler;
newGeocoder(): Geocoder;
newStaticMap(): StaticMap;
setAuthentication(clientId: string, signingKey: string): void;
}
/**
* An enum representing the size of a marker added to a map.
* See also
*
* Google Static Maps API
*/
export enum MarkerSize { TINY, MID, SMALL }
/**
* An enum representing the mode of travel to use when finding directions.
*/
export enum Mode { DRIVING, WALKING, BICYCLING, TRANSIT }
/**
* Allows for the creation and decoration of static map images.
*
* The example below shows how you can use this class to create a map of New York City's Theatre
* District, including nearby train stations, and display it in a simple web app.
*
* function doGet(event) {
* // Create a map centered on Times Square.
* var map = Maps.newStaticMap()
* .setSize(600, 600)
* .setCenter('Times Square, New York, NY');
*
* // Add markers for the nearbye train stations.
* map.setMarkerStyle(Maps.StaticMap.MarkerSize.MID, Maps.StaticMap.Color.RED, 'T');
* map.addMarker('Grand Central Station, New York, NY');
* map.addMarker('Penn Station, New York, NY');
*
* // Show the boundaries of the Theatre District.
* var corners = [
* '8th Ave & 53rd St, New York, NY',
* '6th Ave & 53rd St, New York, NY',
* '6th Ave & 40th St, New York, NY',
* '8th Ave & 40th St, New York, NY'
* ];
* map.setPathStyle(4, Maps.StaticMap.Color.BLACK, Maps.StaticMap.Color.BLUE);
* map.beginPath();
* for (var i = 0; i < corners.length; i++) {
* map.addAddress(corners[i]);
* }
*
* // Create the user interface and add the map image.
* var app = UiApp.createApplication().setTitle('NYC Theatre District');
* app.add(app.createImage(map.getMapUrl()));
* return app;
* }
*
* See also
*
* Google Static Maps API
*/
export interface StaticMap {
addAddress(address: string): StaticMap;
addMarker(latitude: Number, longitude: Number): StaticMap;
addMarker(address: string): StaticMap;
addPath(points: Number[]): StaticMap;
addPath(polyline: string): StaticMap;
addPoint(latitude: Number, longitude: Number): StaticMap;
addVisible(latitude: Number, longitude: Number): StaticMap;
addVisible(address: string): StaticMap;
beginPath(): StaticMap;
clearMarkers(): StaticMap;
clearPaths(): StaticMap;
clearVisibles(): StaticMap;
endPath(): StaticMap;
getAs(contentType: string): Base.Blob;
getBlob(): Base.Blob;
getMapImage(): Byte[];
getMapUrl(): string;
setCenter(latitude: Number, longitude: Number): StaticMap;
setCenter(address: string): StaticMap;
setCustomMarkerStyle(imageUrl: string, useShadow: boolean): StaticMap;
setFormat(format: string): StaticMap;
setLanguage(language: string): StaticMap;
setMapType(mapType: string): StaticMap;
setMarkerStyle(size: string, color: string, label: string): StaticMap;
setMobile(useMobileTiles: boolean): StaticMap;
setPathStyle(weight: Integer, color: string, fillColor: string): StaticMap;
setSize(width: Integer, height: Integer): StaticMap;
setZoom(zoom: Integer): StaticMap;
}
/**
* A collection of enums used by StaticMap.
*/
export interface StaticMapEnums {
Color: Color
Format: Format
MarkerSize: MarkerSize
Type: Type
}
/**
* An enum representing the type of map to render.
* See also
*
* Google Static Maps API
*/
export enum Type { ROADMAP, SATELLITE, TERRAIN, HYBRID }
}
}
declare var Maps: GoogleAppsScript.Maps.Maps;
+223
View File
@@ -0,0 +1,223 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module Optimization {
/**
* Object storing a linear constraint of the form lowerBound ≤ Sum(a(i) x(i)) ≤ upperBound
* where lowerBound and upperBound are constants, a(i) are constant
* coefficients and x(i) are variables (unknowns).
*
* The example below creates one variable x with values between 0 and 5 and
* creates the constraint 0 ≤ 2 * x ≤ 5. This is done by first creating a constraint with
* the lower bound 5 and upper bound 5. Then the coefficient for variable x
* in this constraint is set to 2.
*
* var engine = LinearOptimizationService.createEngine();
* // Create a variable so we can add it to the constraint
* engine.addVariable('x', 0, 5);
* // Create a linear constraint with the bounds 0 and 10
* var constraint = engine.addConstraint(0, 10);
* // Set the coefficient of the variable in the constraint. The constraint is now:
* // 0 <= 2 * x <= 5
* constraint.setCoefficient('x', 2);
*/
export interface LinearOptimizationConstraint {
setCoefficient(variableName: string, coefficient: Number): LinearOptimizationConstraint;
}
/**
* The engine used to model and solve a linear program. The example below solves the following
* linear program:
*
* Two variables, x and y:
*
* 0 ≤ x ≤ 10
*
* 0 ≤ y ≤ 5
*
* Constraints:
*
* 0 ≤ 2 * x + 5 * y ≤ 10
*
* 0 ≤ 10 * x + 3 * y ≤ 20
*
* Objective:
* Maximize x + y
*
* var engine = LinearOptimizationService.createEngine();
*
* // Add variables, constraints and define the objective with addVariable(), addConstraint(), etc
* // Add two variables, 0 <= x <= 10 and 0 <= y <= 5
* engine.addVariable('x', 0, 10);
* engine.addVariable('y', 0, 5);
*
* // Create the constraint: 0 <= 2 * x + 5 * y <= 10
* var constraint = engine.addConstraint(0, 10);
* constraint.setCoefficient('x', 2);
* constraint.setCoefficient('y', 5);
*
* // Create the constraint: 0 <= 10 * x + 3 * y <= 20
* var constraint = engine.addConstraint(0, 20);
* constraint.setCoefficient('x', 10);
* constraint.setCoefficient('y', 3);
*
* // Set the objective to be x + y
* engine.setObjectiveCoefficient('x', 1);
* engine.setObjectiveCoefficient('y', 1);
*
* // Engine should maximize the objective
* engine.setMaximization();
*
* // Solve the linear program
* var solution = engine.solve();
* if (!solution.isValid()) {
* Logger.log('No solution ' + solution.getStatus());
* } else {
* Logger.log('Value of x: ' + solution.getVariableValue('x'));
* Logger.log('Value of y: ' + solution.getVariableValue('y'));
* }
*/
export interface LinearOptimizationEngine {
addConstraint(lowerBound: Number, upperBound: Number): LinearOptimizationConstraint;
addVariable(name: string, lowerBound: Number, upperBound: Number): LinearOptimizationEngine;
addVariable(name: string, lowerBound: Number, upperBound: Number, type: VariableType): LinearOptimizationEngine;
setMaximization(): LinearOptimizationEngine;
setMinimization(): LinearOptimizationEngine;
setObjectiveCoefficient(variableName: string, coefficient: Number): LinearOptimizationEngine;
solve(): LinearOptimizationSolution;
solve(seconds: Number): LinearOptimizationSolution;
}
/**
* The linear optimization service, used to model and solve linear and mixed-integer linear
* programs. The example below solves the following linear program:
*
* Two variables, x and y:
*
* 0 ≤ x ≤ 10
*
* 0 ≤ y ≤ 5
*
* Constraints:
*
* 0 ≤ 2 * x + 5 * y ≤ 10
*
* 0 ≤ 10 * x + 3 * y ≤ 20
*
* Objective:
* Maximize x + y
*
* var engine = LinearOptimizationService.createEngine();
*
* // Add variables, constraints and define the objective using addVariable(), addConstraint(), etc.
* // Add two variables, 0 <= x <= 10 and 0 <= y <= 5
* engine.addVariable('x', 0, 10);
* engine.addVariable('y', 0, 5);
*
* // Create the constraint: 0 <= 2 * x + 5 * y <= 10
* var constraint = engine.addConstraint(0, 10);
* constraint.setCoefficient('x', 2);
* constraint.setCoefficient('y', 5);
*
* // Create the constraint: 0 <= 10 * x + 3 * y <= 20
* var constraint = engine.addConstraint(0, 20);
* constraint.setCoefficient('x', 10);
* constraint.setCoefficient('y', 3);
*
* // Set the objective to be x + y
* engine.setObjectiveCoefficient('x', 1);
* engine.setObjectiveCoefficient('y', 1);
*
* // Engine should maximize the objective.
* engine.setMaximization();
*
* // Solve the linear program
* var solution = engine.solve();
* if (!solution.isValid()) {
* Logger.log('No solution ' + solution.getStatus());
* } else {
* Logger.log('Value of x: ' + solution.getVariableValue('x'));
* Logger.log('Value of y: ' + solution.getVariableValue('y'));
* }
*/
export interface LinearOptimizationService {
Status: Status
VariableType: VariableType
createEngine(): LinearOptimizationEngine;
}
/**
* The solution of a linear program. The example below solves the following linear program:
*
* Two variables, x and y:
*
* 0 ≤ x ≤ 10
*
* 0 ≤ y ≤ 5
*
* Constraints:
*
* 0 ≤ 2 * x + 5 * y ≤ 10
*
* 0 ≤ 10 * x + 3 * y ≤ 20
*
* Objective:
* Maximize x + y
*
* var engine = LinearOptimizationService.createEngine();
*
* // Add variables, constraints and define the objective with addVariable(), addConstraint(), etc.
* // Add two variables, 0 <= x <= 10 and 0 <= y <= 5
* engine.addVariable('x', 0, 10);
* engine.addVariable('y', 0, 5);
*
* // Create the constraint: 0 <= 2 * x + 5 * y <= 10
* var constraint = engine.addConstraint(0, 10);
* constraint.setCoefficient('x', 2);
* constraint.setCoefficient('y', 5);
*
* // Create the constraint: 0 <= 10 * x + 3 * y <= 20
* var constraint = engine.addConstraint(0, 20);
* constraint.setCoefficient('x', 10);
* constraint.setCoefficient('y', 3);
*
* // Set the objective to be x + y
* engine.setObjectiveCoefficient('x', 1);
* engine.setObjectiveCoefficient('y', 1);
*
* // Engine should maximize the objective
* engine.setMaximization();
*
* // Solve the linear program
* var solution = engine.solve();
* if (!solution.isValid()) {
* Logger.log('No solution ' + solution.getStatus());
* } else {
* Logger.log('Objective value: ' + solution.getObjectiveValue());
* Logger.log('Value of x: ' + solution.getVariableValue('x'));
* Logger.log('Value of y: ' + solution.getVariableValue('y'));
* }
*/
export interface LinearOptimizationSolution {
getObjectiveValue(): Number;
getStatus(): Status;
getVariableValue(variableName: string): Number;
isValid(): boolean;
}
/**
* Status of the solution. Before solving a problem the status will be NOT_SOLVED;
* afterwards it will take any of the other values depending if it successfully found a solution and
* if the solution is optimal.
*/
export enum Status { OPTIMAL, FEASIBLE, INFEASIBLE, UNBOUNDED, ABNORMAL, MODEL_INVALID, NOT_SOLVED }
/**
* Type of variables created by the engine.
*/
export enum VariableType { INTEGER, CONTINUOUS }
}
}
declare var LinearOptimizationService: GoogleAppsScript.Optimization.LinearOptimizationService;
+86
View File
@@ -0,0 +1,86 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module Properties {
/**
* The properties object acts as the interface to access user, document, or script properties.
* The specific property type depends on which of the three methods of
* PropertiesService the script called:
* PropertiesService.getDocumentProperties(),
* PropertiesService.getUserProperties(), or
* PropertiesService.getScriptProperties(). Properties cannot be shared between scripts. For
* more information about property types, see the
* guide to the Properties service.
*/
export interface Properties {
deleteAllProperties(): Properties;
deleteProperty(key: string): Properties;
getKeys(): String[];
getProperties(): Object;
getProperty(key: string): string;
setProperties(properties: Object): Properties;
setProperties(properties: Object, deleteAllOthers: boolean): Properties;
setProperty(key: string, value: string): Properties;
}
/**
* Allows scripts to store simple data in key-value pairs scoped to one script, one user of a
* script, or one document in which an add-on is used. Properties cannot be shared between scripts.
* For more information about when to use each type of property, see the
* guide to the Properties service.
*
* // Sets three properties of different types.
* var documentProperties = PropertiesService.getDocumentProperties();
* var scriptProperties = PropertiesService.getScriptProperties();
* var userProperties = PropertiesService.getUserProperties();
*
* documentProperties.setProperty('DAYS_TO_FETCH', '5');
* scriptProperties.setProperty('SERVER_URL', 'http://www.example.com/MyWeatherService/');
* userProperties.setProperty('DISPLAY_UNITS', 'metric');
*/
export interface PropertiesService {
getDocumentProperties(): Properties;
getScriptProperties(): Properties;
getUserProperties(): Properties;
}
/**
*
* Deprecated. This class is deprecated and should not be used in new scripts.
* Script Properties are key-value pairs stored by a script in a persistent store. Script Properties
* are scoped per script, regardless of which user runs the script.
*/
export interface ScriptProperties {
deleteAllProperties(): ScriptProperties;
deleteProperty(key: string): ScriptProperties;
getKeys(): String[];
getProperties(): Object;
getProperty(key: string): string;
setProperties(properties: Object): ScriptProperties;
setProperties(properties: Object, deleteAllOthers: boolean): ScriptProperties;
setProperty(key: string, value: string): ScriptProperties;
}
/**
*
* Deprecated. This class is deprecated and should not be used in new scripts.
* User Properties are key-value pairs unique to a user. User Properties are scoped per user; any
* script running under the identity of a user can access User Properties for that user only.
*/
export interface UserProperties {
deleteAllProperties(): UserProperties;
deleteProperty(key: string): UserProperties;
getKeys(): String[];
getProperties(): Object;
getProperty(key: string): string;
setProperties(properties: Object): UserProperties;
setProperties(properties: Object, deleteAllOthers: boolean): UserProperties;
setProperty(key: string, value: string): UserProperties;
}
}
}
declare var PropertiesService: GoogleAppsScript.Properties.PropertiesService;
declare var ScriptProperties: GoogleAppsScript.Properties.ScriptProperties;
declare var UserProperties: GoogleAppsScript.Properties.UserProperties;
+210
View File
@@ -0,0 +1,210 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
/// <reference path="google-apps-script.document.d.ts" />
/// <reference path="google-apps-script.forms.d.ts" />
/// <reference path="google-apps-script.spreadsheet.d.ts" />
declare module GoogleAppsScript {
export module 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();
* }
*/
export 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.
*/
export interface AuthorizationInfo {
getAuthorizationStatus(): AuthorizationStatus;
getAuthorizationUrl(): string;
}
/**
* An enumeration denoting the authorization status of a script.
*/
export enum AuthorizationStatus { REQUIRED, NOT_REQUIRED }
/**
* A builder for clock triggers.
*/
export interface ClockTriggerBuilder {
after(durationMilliseconds: Integer): ClockTriggerBuilder;
at(date: 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.
*/
export interface DocumentTriggerBuilder {
create(): Trigger;
onOpen(): DocumentTriggerBuilder;
}
/**
* An enumeration denoting the type of triggered event.
*/
export enum EventType { CLOCK, ON_OPEN, ON_EDIT, ON_FORM_SUBMIT, ON_CHANGE }
/**
* A builder for form triggers.
*/
export 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.
*/
export 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.
*/
export interface ScriptApp {
AuthMode: AuthMode
AuthorizationStatus: AuthorizationStatus
EventType: EventType
InstallationSource: InstallationSource
TriggerSource: TriggerSource
WeekDay: Base.Weekday
deleteTrigger(trigger: Trigger): void;
getAuthorizationInfo(authMode: AuthMode): AuthorizationInfo;
getInstallationSource(): InstallationSource;
getOAuthToken(): string;
getProjectKey(): string;
getProjectTriggers(): Trigger[];
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;
getScriptTriggers(): Trigger[];
}
/**
*
*/
export enum Service { MYSELF, DOMAIN, ALL }
/**
* Builder for spreadsheet triggers.
*/
export 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;
* }
*/
export interface StateTokenBuilder {
createToken(): string;
withArgument(name: string, value: string): StateTokenBuilder;
withMethod(method: string): StateTokenBuilder;
withTimeout(seconds: Integer): StateTokenBuilder;
}
/**
* A script trigger.
*/
export interface Trigger {
getEventType(): EventType;
getHandlerFunction(): string;
getTriggerSource(): TriggerSource;
getTriggerSourceId(): string;
getUniqueId(): string;
}
/**
* A generic builder for script triggers.
*/
export 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;
timeBased(): ClockTriggerBuilder;
}
/**
* An enumeration denoting the source of the event that causes the trigger to fire.
*/
export enum TriggerSource { SPREADSHEETS, CLOCK, FORMS, DOCUMENTS }
}
}
declare var ScriptApp: GoogleAppsScript.Script.ScriptApp;
+236
View File
@@ -0,0 +1,236 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Sites {
/**
* A Sites Attachment such as a file attached to a page.
*
* Note that an Attachment is a Blob and can be used anywhere Blob input is expected.
*
* var filesPage = SitesApp.getSite('example.com', 'mysite').getChildByName("files");
* var attachments = filesPage.getAttachments();
*
* // DocsList.createFile accepts a blob input. Since an Attachment is just a blob, we can
* // just pass it directly to that method
* var file = DocsList.createFile(attachments[0]);
*/
export interface Attachment {
deleteAttachment(): void;
getAs(contentType: string): Base.Blob;
getAttachmentType(): AttachmentType;
getBlob(): Base.Blob;
getContentType(): string;
getDatePublished(): Date;
getDescription(): string;
getLastUpdated(): Date;
getParent(): Page;
getTitle(): string;
getUrl(): string;
setContentType(contentType: string): Attachment;
setDescription(description: string): Attachment;
setFrom(blob: Base.BlobSource): Attachment;
setParent(parent: Page): Attachment;
setTitle(title: string): Attachment;
setUrl(url: string): Attachment;
}
/**
* A typesafe enum for sites attachment type.
*/
export enum AttachmentType { WEB, HOSTED }
/**
* A Sites Column - a column from a Sites List page.
*/
export interface Column {
deleteColumn(): void;
getName(): string;
getParent(): Page;
setName(name: string): Column;
}
/**
* A Comment attached to any Sites page.
*/
export interface Comment {
deleteComment(): void;
getAuthorEmail(): string;
getAuthorName(): string;
getContent(): string;
getDatePublished(): Date;
getLastUpdated(): Date;
getParent(): Page;
setContent(content: string): Comment;
setParent(parent: Page): Comment;
}
/**
* A Sites ListItem - a list element from a Sites List page.
*/
export interface ListItem {
deleteListItem(): void;
getDatePublished(): Date;
getLastUpdated(): Date;
getParent(): Page;
getValueByIndex(index: Integer): string;
getValueByName(name: string): string;
setParent(parent: Page): ListItem;
setValueByIndex(index: Integer, value: string): ListItem;
setValueByName(name: string, value: string): ListItem;
}
/**
* A Page on a Google Site.
*/
export interface Page {
addColumn(name: string): Column;
addHostedAttachment(blob: Base.BlobSource): Attachment;
addHostedAttachment(blob: Base.BlobSource, description: string): Attachment;
addListItem(values: String[]): ListItem;
addWebAttachment(title: string, description: string, url: string): Attachment;
createAnnouncement(title: string, html: string): Page;
createAnnouncement(title: string, html: string, asDraft: boolean): Page;
createAnnouncementsPage(title: string, name: string, html: string): Page;
createFileCabinetPage(title: string, name: string, html: string): Page;
createListPage(title: string, name: string, html: string, columnNames: String[]): Page;
createPageFromTemplate(title: string, name: string, template: Page): Page;
createWebPage(title: string, name: string, html: string): Page;
deletePage(): void;
getAllDescendants(): Page[];
getAllDescendants(options: Object): Page[];
getAnnouncements(): Page[];
getAnnouncements(optOptions: Object): Page[];
getAttachments(): Attachment[];
getAttachments(optOptions: Object): Attachment[];
getAuthors(): String[];
getChildByName(name: string): Page;
getChildren(): Page[];
getChildren(options: Object): Page[];
getColumns(): Column[];
getComments(): Comment[];
getComments(optOptions: Object): Comment[];
getDatePublished(): Date;
getHtmlContent(): string;
getIsDraft(): boolean;
getLastEdited(): Date;
getLastUpdated(): Date;
getListItems(): ListItem[];
getListItems(optOptions: Object): ListItem[];
getName(): string;
getPageType(): PageType;
getParent(): Page;
getTextContent(): string;
getTitle(): string;
getUrl(): string;
isDeleted(): boolean;
isTemplate(): boolean;
publishAsTemplate(name: string): Page;
search(query: string): Page[];
search(query: string, options: Object): Page[];
setHtmlContent(html: string): Page;
setIsDraft(draft: boolean): Page;
setName(name: string): Page;
setParent(parent: Page): Page;
setTitle(title: string): Page;
addComment(content: string): Comment;
getPageName(): string;
getSelfLink(): string;
}
/**
* A typesafe enum for sites page type.
*/
export enum PageType { WEB_PAGE, LIST_PAGE, ANNOUNCEMENT, ANNOUNCEMENTS_PAGE, FILE_CABINET_PAGE }
/**
* An object representing a Google Site.
*/
export interface Site {
addEditor(emailAddress: string): Site;
addEditor(user: Base.User): Site;
addEditors(emailAddresses: String[]): Site;
addOwner(email: string): Site;
addOwner(user: Base.User): Site;
addViewer(emailAddress: string): Site;
addViewer(user: Base.User): Site;
addViewers(emailAddresses: String[]): Site;
createAnnouncementsPage(title: string, name: string, html: string): Page;
createFileCabinetPage(title: string, name: string, html: string): Page;
createListPage(title: string, name: string, html: string, columnNames: String[]): Page;
createPageFromTemplate(title: string, name: string, template: Page): Page;
createWebPage(title: string, name: string, html: string): Page;
getAllDescendants(): Page[];
getAllDescendants(options: Object): Page[];
getChildByName(name: string): Page;
getChildren(): Page[];
getChildren(options: Object): Page[];
getEditors(): Base.User[];
getName(): string;
getOwners(): Base.User[];
getSummary(): string;
getTemplates(): Page[];
getTheme(): string;
getTitle(): string;
getUrl(): string;
getViewers(): Base.User[];
removeEditor(emailAddress: string): Site;
removeEditor(user: Base.User): Site;
removeOwner(email: string): Site;
removeOwner(user: Base.User): Site;
removeViewer(emailAddress: string): Site;
removeViewer(user: Base.User): Site;
search(query: string): Page[];
search(query: string, options: Object): Page[];
setSummary(summary: string): Site;
setTheme(theme: string): Site;
setTitle(title: string): Site;
addCollaborator(email: string): Site;
addCollaborator(user: Base.User): Site;
createAnnouncement(title: string, html: string, parent: Page): Page;
createComment(inReplyTo: string, html: string, parent: Page): Comment;
createListItem(html: string, columnNames: String[], values: String[], parent: Page): ListItem;
createWebAttachment(title: string, url: string, parent: Page): Attachment;
deleteSite(): void;
getAnnouncements(): Page[];
getAnnouncementsPages(): Page[];
getAttachments(): Attachment[];
getCollaborators(): Base.User[];
getComments(): Comment[];
getFileCabinetPages(): Page[];
getListItems(): ListItem[];
getListPages(): Page[];
getSelfLink(): string;
getSiteName(): string;
getWebAttachments(): Attachment[];
getWebPages(): Page[];
removeCollaborator(email: string): Site;
removeCollaborator(user: Base.User): Site;
}
/**
* Create and access Google Sites.
*/
export interface SitesApp {
AttachmentType: AttachmentType
PageType: PageType
copySite(domain: string, name: string, title: string, summary: string, site: Site): Site;
createSite(domain: string, name: string, title: string, summary: string): Site;
getActivePage(): Page;
getActiveSite(): Site;
getAllSites(domain: string): Site[];
getAllSites(domain: string, start: Integer, max: Integer): Site[];
getPageByUrl(url: string): Page;
getSite(name: string): Site;
getSite(domain: string, name: string): Site;
getSiteByUrl(url: string): Site;
getSites(): Site[];
getSites(start: Integer, max: Integer): Site[];
getSites(domain: string): Site[];
getSites(domain: string, start: Integer, max: Integer): Site[];
}
}
}
declare var SitesApp: GoogleAppsScript.Sites.SitesApp;
+913
View File
@@ -0,0 +1,913 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.charts.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
/// <reference path="google-apps-script.drive.d.ts" />
declare module GoogleAppsScript {
export module Spreadsheet {
/**
* The chart's position within a sheet. Can be updated using the EmbeddedChart.modify()
* function.
*
* chart = chart.modify().setPosition(5, 5, 0, 0).build();
* sheet.updateChart(chart);
*/
export interface ContainerInfo {
getAnchorColumn(): Integer;
getAnchorRow(): Integer;
getOffsetX(): Integer;
getOffsetY(): Integer;
}
/**
* This class allows users to access existing data-validation rules. To create a new rule, see
* SpreadsheetApp.newDataValidation(), DataValidationBuilder, and
* Range.setDataValidation(rule).
*
* // Log information about the data-validation rule for cell A1.
* var cell = SpreadsheetApp.getActive().getRange('A1');
* var rule = cell.getDataValidation();
* if (rule != null) {
* var criteria = rule.getCriteriaType();
* var args = rule.getCriteriaValues();
* Logger.log('The data-validation rule is %s %s', criteria, args);
* } else {
* Logger.log('The cell does not have a data-validation rule.')
* }
*/
export interface DataValidation {
copy(): DataValidationBuilder;
getAllowInvalid(): boolean;
getCriteriaType(): DataValidationCriteria;
getCriteriaValues(): Object[];
getHelpText(): string;
}
/**
* Builder for data-validation rules.
*
* // Set the data validation for cell A1 to require a value from B1:B10.
* var cell = SpreadsheetApp.getActive().getRange('A1');
* var range = SpreadsheetApp.getActive().getRange('B1:B10');
* var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
* cell.setDataValidation(rule);
*/
export interface DataValidationBuilder {
build(): DataValidation;
copy(): DataValidationBuilder;
getAllowInvalid(): boolean;
getCriteriaType(): DataValidationCriteria;
getCriteriaValues(): Object[];
getHelpText(): string;
requireDate(): DataValidationBuilder;
requireDateAfter(date: Date): DataValidationBuilder;
requireDateBefore(date: Date): DataValidationBuilder;
requireDateBetween(start: Date, end: Date): DataValidationBuilder;
requireDateEqualTo(date: Date): DataValidationBuilder;
requireDateNotBetween(start: Date, end: Date): DataValidationBuilder;
requireDateOnOrAfter(date: Date): DataValidationBuilder;
requireDateOnOrBefore(date: Date): DataValidationBuilder;
requireFormulaSatisfied(formula: string): DataValidationBuilder;
requireNumberBetween(start: Number, end: Number): DataValidationBuilder;
requireNumberEqualTo(number: Number): DataValidationBuilder;
requireNumberGreaterThan(number: Number): DataValidationBuilder;
requireNumberGreaterThanOrEqualTo(number: Number): DataValidationBuilder;
requireNumberLessThan(number: Number): DataValidationBuilder;
requireNumberLessThanOrEqualTo(number: Number): DataValidationBuilder;
requireNumberNotBetween(start: Number, end: Number): DataValidationBuilder;
requireNumberNotEqualTo(number: Number): DataValidationBuilder;
requireTextContains(text: string): DataValidationBuilder;
requireTextDoesNotContain(text: string): DataValidationBuilder;
requireTextEqualTo(text: string): DataValidationBuilder;
requireTextIsEmail(): DataValidationBuilder;
requireTextIsUrl(): DataValidationBuilder;
requireValueInList(values: String[]): DataValidationBuilder;
requireValueInList(values: String[], showDropdown: boolean): DataValidationBuilder;
requireValueInRange(range: Range): DataValidationBuilder;
requireValueInRange(range: Range, showDropdown: boolean): DataValidationBuilder;
setAllowInvalid(allowInvalidData: boolean): DataValidationBuilder;
setHelpText(helpText: string): DataValidationBuilder;
withCriteria(criteria: DataValidationCriteria, args: Object[]): DataValidationBuilder;
}
/**
* An enumeration representing the data-validation criteria that can be set on a range.
*
* // Change existing data-validation rules that require a date in 2013 to require a date in 2014.
* var oldDates = [new Date('1/1/2013'), new Date('12/31/2013')];
* var newDates = [new Date('1/1/2014'), new Date('12/31/2014')];
* var sheet = SpreadsheetApp.getActiveSheet();
* var range = sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns());
* var rules = range.getDataValidations();
*
* for (var i = 0; i < rules.length; i++) {
* for (var j = 0; j < rules[i].length; j++) {
* var rule = rules[i][j];
*
* if (rule != null) {
* var criteria = rule.getCriteriaType();
* var args = rule.getCriteriaValues();
*
* if (criteria == SpreadsheetApp.DataValidationCriteria.DATE_BETWEEN
* && args[0].getTime() == oldDates[0].getTime()
* && args[1].getTime() == oldDates[1].getTime()) {
* // Create a builder from the existing rule, then change the dates.
* rules[i][j] = rule.copy().withCriteria(criteria, newDates).build();
* }
* }
* }
* }
* range.setDataValidations(rules);
*/
export enum DataValidationCriteria { DATE_AFTER, DATE_BEFORE, DATE_BETWEEN, DATE_EQUAL_TO, DATE_IS_VALID_DATE, DATE_NOT_BETWEEN, DATE_ON_OR_AFTER, DATE_ON_OR_BEFORE, NUMBER_BETWEEN, NUMBER_EQUAL_TO, NUMBER_GREATER_THAN, NUMBER_GREATER_THAN_OR_EQUAL_TO, NUMBER_LESS_THAN, NUMBER_LESS_THAN_OR_EQUAL_TO, NUMBER_NOT_BETWEEN, NUMBER_NOT_EQUAL_TO, TEXT_CONTAINS, TEXT_DOES_NOT_CONTAIN, TEXT_EQUAL_TO, TEXT_IS_VALID_EMAIL, TEXT_IS_VALID_URL, VALUE_IN_LIST, VALUE_IN_RANGE, CUSTOM_FORMULA }
/**
* Builder for area charts. For more details, see the Gviz
* documentation.
*/
export interface EmbeddedAreaChartBuilder {
addRange(range: Range): EmbeddedChartBuilder;
asAreaChart(): EmbeddedAreaChartBuilder;
asBarChart(): EmbeddedBarChartBuilder;
asColumnChart(): EmbeddedColumnChartBuilder;
asLineChart(): EmbeddedLineChartBuilder;
asPieChart(): EmbeddedPieChartBuilder;
asScatterChart(): EmbeddedScatterChartBuilder;
asTableChart(): EmbeddedTableChartBuilder;
build(): EmbeddedChart;
getChartType(): Charts.ChartType;
getContainer(): ContainerInfo;
getRanges(): Range[];
removeRange(range: Range): EmbeddedChartBuilder;
reverseCategories(): EmbeddedAreaChartBuilder;
setBackgroundColor(cssValue: string): EmbeddedAreaChartBuilder;
setChartType(type: Charts.ChartType): EmbeddedChartBuilder;
setColors(cssValues: String[]): EmbeddedAreaChartBuilder;
setLegendPosition(position: Charts.Position): EmbeddedAreaChartBuilder;
setLegendTextStyle(textStyle: Charts.TextStyle): EmbeddedAreaChartBuilder;
setOption(option: string, value: Object): EmbeddedChartBuilder;
setPointStyle(style: Charts.PointStyle): EmbeddedAreaChartBuilder;
setPosition(anchorRowPos: Integer, anchorColPos: Integer, offsetX: Integer, offsetY: Integer): EmbeddedChartBuilder;
setRange(start: Number, end: Number): EmbeddedAreaChartBuilder;
setStacked(): EmbeddedAreaChartBuilder;
setTitle(chartTitle: string): EmbeddedAreaChartBuilder;
setTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedAreaChartBuilder;
setXAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedAreaChartBuilder;
setXAxisTitle(title: string): EmbeddedAreaChartBuilder;
setXAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedAreaChartBuilder;
setYAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedAreaChartBuilder;
setYAxisTitle(title: string): EmbeddedAreaChartBuilder;
setYAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedAreaChartBuilder;
useLogScale(): EmbeddedAreaChartBuilder;
}
/**
* Builder for bar charts. For more details, see the Gviz
* documentation.
*/
export interface EmbeddedBarChartBuilder {
addRange(range: Range): EmbeddedChartBuilder;
asAreaChart(): EmbeddedAreaChartBuilder;
asBarChart(): EmbeddedBarChartBuilder;
asColumnChart(): EmbeddedColumnChartBuilder;
asLineChart(): EmbeddedLineChartBuilder;
asPieChart(): EmbeddedPieChartBuilder;
asScatterChart(): EmbeddedScatterChartBuilder;
asTableChart(): EmbeddedTableChartBuilder;
build(): EmbeddedChart;
getChartType(): Charts.ChartType;
getContainer(): ContainerInfo;
getRanges(): Range[];
removeRange(range: Range): EmbeddedChartBuilder;
reverseCategories(): EmbeddedBarChartBuilder;
reverseDirection(): EmbeddedBarChartBuilder;
setBackgroundColor(cssValue: string): EmbeddedBarChartBuilder;
setChartType(type: Charts.ChartType): EmbeddedChartBuilder;
setColors(cssValues: String[]): EmbeddedBarChartBuilder;
setLegendPosition(position: Charts.Position): EmbeddedBarChartBuilder;
setLegendTextStyle(textStyle: Charts.TextStyle): EmbeddedBarChartBuilder;
setOption(option: string, value: Object): EmbeddedChartBuilder;
setPosition(anchorRowPos: Integer, anchorColPos: Integer, offsetX: Integer, offsetY: Integer): EmbeddedChartBuilder;
setRange(start: Number, end: Number): EmbeddedBarChartBuilder;
setStacked(): EmbeddedBarChartBuilder;
setTitle(chartTitle: string): EmbeddedBarChartBuilder;
setTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedBarChartBuilder;
setXAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedBarChartBuilder;
setXAxisTitle(title: string): EmbeddedBarChartBuilder;
setXAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedBarChartBuilder;
setYAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedBarChartBuilder;
setYAxisTitle(title: string): EmbeddedBarChartBuilder;
setYAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedBarChartBuilder;
useLogScale(): EmbeddedBarChartBuilder;
}
/**
* Represents a chart that has been embedded into a Spreadsheet.
*
* This example shows how to modify an existing chart:
*
* var sheet = SpreadsheetApp.getActiveSheet();
* var range = sheet.getRange("A2:B8")
* var chart = sheet.getCharts()[0];
* chart = chart.modify()
* .addRange(range)
* .setOption('title', 'Updated!')
* .setOption('animation.duration', 500)
* .setPosition(2,2,0,0)
* .build();
* sheet.updateChart(chart);
*
* This example shows how to create a new chart:
*
* function newChart(range, sheet) {
* var sheet = SpreadsheetApp.getActiveSheet();
* var chartBuilder = sheet.newChart();
* chartBuilder.addRange(range)
* .setChartType(Charts.ChartType.LINE)
* .setOption('title', 'My Line Chart!');
* sheet.insertChart(chartBuilder.build());
* }
*/
export interface EmbeddedChart {
getAs(contentType: string): Base.Blob;
getBlob(): Base.Blob;
getContainerInfo(): ContainerInfo;
getId(): string;
getOptions(): Charts.ChartOptions;
getRanges(): Range[];
getType(): string;
modify(): EmbeddedChartBuilder;
setId(id: string): Charts.Chart;
}
/**
* This builder allows you to edit an EmbeddedChart. Make sure to call
* sheet.updateChart(builder.build()) to save your changes.
*
* var sheet = SpreadsheetApp.getActiveSheet();
* var range = sheet.getRange("A1:B8");
* var chart = sheet.getCharts()[0];
* chart = chart.modify()
* .addRange(range)
* .setOption('title', 'Updated!')
* .setOption('animation.duration', 500)
* .setPosition(2,2,0,0)
* .build();
* sheet.updateChart(chart);
*/
export interface EmbeddedChartBuilder {
addRange(range: Range): EmbeddedChartBuilder;
asAreaChart(): EmbeddedAreaChartBuilder;
asBarChart(): EmbeddedBarChartBuilder;
asColumnChart(): EmbeddedColumnChartBuilder;
asLineChart(): EmbeddedLineChartBuilder;
asPieChart(): EmbeddedPieChartBuilder;
asScatterChart(): EmbeddedScatterChartBuilder;
asTableChart(): EmbeddedTableChartBuilder;
build(): EmbeddedChart;
getChartType(): Charts.ChartType;
getContainer(): ContainerInfo;
getRanges(): Range[];
removeRange(range: Range): EmbeddedChartBuilder;
setChartType(type: Charts.ChartType): EmbeddedChartBuilder;
setOption(option: string, value: Object): EmbeddedChartBuilder;
setPosition(anchorRowPos: Integer, anchorColPos: Integer, offsetX: Integer, offsetY: Integer): EmbeddedChartBuilder;
}
/**
* Builder for column charts. For more details, see the Gviz
* documentation.
*/
export interface EmbeddedColumnChartBuilder {
addRange(range: Range): EmbeddedChartBuilder;
asAreaChart(): EmbeddedAreaChartBuilder;
asBarChart(): EmbeddedBarChartBuilder;
asColumnChart(): EmbeddedColumnChartBuilder;
asLineChart(): EmbeddedLineChartBuilder;
asPieChart(): EmbeddedPieChartBuilder;
asScatterChart(): EmbeddedScatterChartBuilder;
asTableChart(): EmbeddedTableChartBuilder;
build(): EmbeddedChart;
getChartType(): Charts.ChartType;
getContainer(): ContainerInfo;
getRanges(): Range[];
removeRange(range: Range): EmbeddedChartBuilder;
reverseCategories(): EmbeddedColumnChartBuilder;
setBackgroundColor(cssValue: string): EmbeddedColumnChartBuilder;
setChartType(type: Charts.ChartType): EmbeddedChartBuilder;
setColors(cssValues: String[]): EmbeddedColumnChartBuilder;
setLegendPosition(position: Charts.Position): EmbeddedColumnChartBuilder;
setLegendTextStyle(textStyle: Charts.TextStyle): EmbeddedColumnChartBuilder;
setOption(option: string, value: Object): EmbeddedChartBuilder;
setPosition(anchorRowPos: Integer, anchorColPos: Integer, offsetX: Integer, offsetY: Integer): EmbeddedChartBuilder;
setRange(start: Number, end: Number): EmbeddedColumnChartBuilder;
setStacked(): EmbeddedColumnChartBuilder;
setTitle(chartTitle: string): EmbeddedColumnChartBuilder;
setTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedColumnChartBuilder;
setXAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedColumnChartBuilder;
setXAxisTitle(title: string): EmbeddedColumnChartBuilder;
setXAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedColumnChartBuilder;
setYAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedColumnChartBuilder;
setYAxisTitle(title: string): EmbeddedColumnChartBuilder;
setYAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedColumnChartBuilder;
useLogScale(): EmbeddedColumnChartBuilder;
}
/**
* Builder for line charts. For more details, see the Gviz
* documentation.
*/
export interface EmbeddedLineChartBuilder {
addRange(range: Range): EmbeddedChartBuilder;
asAreaChart(): EmbeddedAreaChartBuilder;
asBarChart(): EmbeddedBarChartBuilder;
asColumnChart(): EmbeddedColumnChartBuilder;
asLineChart(): EmbeddedLineChartBuilder;
asPieChart(): EmbeddedPieChartBuilder;
asScatterChart(): EmbeddedScatterChartBuilder;
asTableChart(): EmbeddedTableChartBuilder;
build(): EmbeddedChart;
getChartType(): Charts.ChartType;
getContainer(): ContainerInfo;
getRanges(): Range[];
removeRange(range: Range): EmbeddedChartBuilder;
reverseCategories(): EmbeddedLineChartBuilder;
setBackgroundColor(cssValue: string): EmbeddedLineChartBuilder;
setChartType(type: Charts.ChartType): EmbeddedChartBuilder;
setColors(cssValues: String[]): EmbeddedLineChartBuilder;
setCurveStyle(style: Charts.CurveStyle): EmbeddedLineChartBuilder;
setLegendPosition(position: Charts.Position): EmbeddedLineChartBuilder;
setLegendTextStyle(textStyle: Charts.TextStyle): EmbeddedLineChartBuilder;
setOption(option: string, value: Object): EmbeddedChartBuilder;
setPointStyle(style: Charts.PointStyle): EmbeddedLineChartBuilder;
setPosition(anchorRowPos: Integer, anchorColPos: Integer, offsetX: Integer, offsetY: Integer): EmbeddedChartBuilder;
setRange(start: Number, end: Number): EmbeddedLineChartBuilder;
setTitle(chartTitle: string): EmbeddedLineChartBuilder;
setTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedLineChartBuilder;
setXAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedLineChartBuilder;
setXAxisTitle(title: string): EmbeddedLineChartBuilder;
setXAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedLineChartBuilder;
setYAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedLineChartBuilder;
setYAxisTitle(title: string): EmbeddedLineChartBuilder;
setYAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedLineChartBuilder;
useLogScale(): EmbeddedLineChartBuilder;
}
/**
* Builder for pie charts. For more details, see the Gviz
* documentation.
*/
export interface EmbeddedPieChartBuilder {
addRange(range: Range): EmbeddedChartBuilder;
asAreaChart(): EmbeddedAreaChartBuilder;
asBarChart(): EmbeddedBarChartBuilder;
asColumnChart(): EmbeddedColumnChartBuilder;
asLineChart(): EmbeddedLineChartBuilder;
asPieChart(): EmbeddedPieChartBuilder;
asScatterChart(): EmbeddedScatterChartBuilder;
asTableChart(): EmbeddedTableChartBuilder;
build(): EmbeddedChart;
getChartType(): Charts.ChartType;
getContainer(): ContainerInfo;
getRanges(): Range[];
removeRange(range: Range): EmbeddedChartBuilder;
reverseCategories(): EmbeddedPieChartBuilder;
set3D(): EmbeddedPieChartBuilder;
setBackgroundColor(cssValue: string): EmbeddedPieChartBuilder;
setChartType(type: Charts.ChartType): EmbeddedChartBuilder;
setColors(cssValues: String[]): EmbeddedPieChartBuilder;
setLegendPosition(position: Charts.Position): EmbeddedPieChartBuilder;
setLegendTextStyle(textStyle: Charts.TextStyle): EmbeddedPieChartBuilder;
setOption(option: string, value: Object): EmbeddedChartBuilder;
setPosition(anchorRowPos: Integer, anchorColPos: Integer, offsetX: Integer, offsetY: Integer): EmbeddedChartBuilder;
setTitle(chartTitle: string): EmbeddedPieChartBuilder;
setTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedPieChartBuilder;
}
/**
* Builder for scatter charts. For more details, see the Gviz
* documentation.
*/
export interface EmbeddedScatterChartBuilder {
addRange(range: Range): EmbeddedChartBuilder;
asAreaChart(): EmbeddedAreaChartBuilder;
asBarChart(): EmbeddedBarChartBuilder;
asColumnChart(): EmbeddedColumnChartBuilder;
asLineChart(): EmbeddedLineChartBuilder;
asPieChart(): EmbeddedPieChartBuilder;
asScatterChart(): EmbeddedScatterChartBuilder;
asTableChart(): EmbeddedTableChartBuilder;
build(): EmbeddedChart;
getChartType(): Charts.ChartType;
getContainer(): ContainerInfo;
getRanges(): Range[];
removeRange(range: Range): EmbeddedChartBuilder;
setBackgroundColor(cssValue: string): EmbeddedScatterChartBuilder;
setChartType(type: Charts.ChartType): EmbeddedChartBuilder;
setColors(cssValues: String[]): EmbeddedScatterChartBuilder;
setLegendPosition(position: Charts.Position): EmbeddedScatterChartBuilder;
setLegendTextStyle(textStyle: Charts.TextStyle): EmbeddedScatterChartBuilder;
setOption(option: string, value: Object): EmbeddedChartBuilder;
setPointStyle(style: Charts.PointStyle): EmbeddedScatterChartBuilder;
setPosition(anchorRowPos: Integer, anchorColPos: Integer, offsetX: Integer, offsetY: Integer): EmbeddedChartBuilder;
setTitle(chartTitle: string): EmbeddedScatterChartBuilder;
setTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedScatterChartBuilder;
setXAxisLogScale(): EmbeddedScatterChartBuilder;
setXAxisRange(start: Number, end: Number): EmbeddedScatterChartBuilder;
setXAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedScatterChartBuilder;
setXAxisTitle(title: string): EmbeddedScatterChartBuilder;
setXAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedScatterChartBuilder;
setYAxisLogScale(): EmbeddedScatterChartBuilder;
setYAxisRange(start: Number, end: Number): EmbeddedScatterChartBuilder;
setYAxisTextStyle(textStyle: Charts.TextStyle): EmbeddedScatterChartBuilder;
setYAxisTitle(title: string): EmbeddedScatterChartBuilder;
setYAxisTitleTextStyle(textStyle: Charts.TextStyle): EmbeddedScatterChartBuilder;
}
/**
* Builder for table charts. For more details, see the Gviz
* documentation.
*/
export interface EmbeddedTableChartBuilder {
addRange(range: Range): EmbeddedChartBuilder;
asAreaChart(): EmbeddedAreaChartBuilder;
asBarChart(): EmbeddedBarChartBuilder;
asColumnChart(): EmbeddedColumnChartBuilder;
asLineChart(): EmbeddedLineChartBuilder;
asPieChart(): EmbeddedPieChartBuilder;
asScatterChart(): EmbeddedScatterChartBuilder;
asTableChart(): EmbeddedTableChartBuilder;
build(): EmbeddedChart;
enablePaging(enablePaging: boolean): EmbeddedTableChartBuilder;
enablePaging(pageSize: Integer): EmbeddedTableChartBuilder;
enablePaging(pageSize: Integer, startPage: Integer): EmbeddedTableChartBuilder;
enableRtlTable(rtlEnabled: boolean): EmbeddedTableChartBuilder;
enableSorting(enableSorting: boolean): EmbeddedTableChartBuilder;
getChartType(): Charts.ChartType;
getContainer(): ContainerInfo;
getRanges(): Range[];
removeRange(range: Range): EmbeddedChartBuilder;
setChartType(type: Charts.ChartType): EmbeddedChartBuilder;
setFirstRowNumber(number: Integer): EmbeddedTableChartBuilder;
setInitialSortingAscending(column: Integer): EmbeddedTableChartBuilder;
setInitialSortingDescending(column: Integer): EmbeddedTableChartBuilder;
setOption(option: string, value: Object): EmbeddedChartBuilder;
setPosition(anchorRowPos: Integer, anchorColPos: Integer, offsetX: Integer, offsetY: Integer): EmbeddedChartBuilder;
showRowNumberColumn(showRowNumber: boolean): EmbeddedTableChartBuilder;
useAlternatingRowStyle(alternate: boolean): EmbeddedTableChartBuilder;
}
/**
*
* Deprecated. For spreadsheets created in the newer version of Google Sheets, use the more powerful
* Protection class instead. Although this class is deprecated, it will remain
* available for compatibility with the older version of Sheets.
* Access and modify protected sheets in the older version of Google Sheets.
*/
export interface PageProtection {
addUser(email: string): void;
getUsers(): String[];
isProtected(): boolean;
removeUser(user: string): void;
setProtected(protection: boolean): void;
}
/**
* Access and modify protected ranges and sheets. A protected range can protect either a static
* range of cells or a named range. A protected sheet may include unprotected regions. For
* spreadsheets created with the older version of Google Sheets, use the PageProtection
* class instead.
*
* // Protect range A1:B10, then remove all other users from the list of editors.
* var ss = SpreadsheetApp.getActive();
* var range = ss.getRange('A1:B10');
* var protection = range.protect().setDescription('Sample protected range');
*
* // Ensure the current user is an editor before removing others. Otherwise, if the user's edit
* // permission comes from a group, the script will throw an exception upon removing the group.
* var me = Session.getEffectiveUser();
* protection.addEditor(me);
* protection.removeEditors(protection.getEditors());
* if (protection.canDomainEdit()) {
* protection.setDomainEdit(false);
* }
*
* // Remove all range protections in the spreadsheet that the user has permission to edit.
* var ss = SpreadsheetApp.getActive();
* var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
* for (var i = 0; i < protections.length; i++) {
* var protection = protections[i];
* if (protection.canEdit()) {
* protection.remove();
* }
* }
*
* // Protect the active sheet, then remove all other users from the list of editors.
* var sheet = SpreadsheetApp.getActiveSheet();
* var protection = sheet.protect().setDescription('Sample protected sheet');
*
* // Ensure the current user is an editor before removing others. Otherwise, if the user's edit
* // permission comes from a group, the script will throw an exception upon removing the group.
* var me = Session.getEffectiveUser();
* protection.addEditor(me);
* protection.removeEditors(protection.getEditors());
* if (protection.canDomainEdit()) {
* protection.setDomainEdit(false);
* }
*/
export interface Protection {
addEditor(emailAddress: string): Protection;
addEditor(user: Base.User): Protection;
addEditors(emailAddresses: String[]): Protection;
canDomainEdit(): boolean;
canEdit(): boolean;
getDescription(): string;
getEditors(): Base.User[];
getProtectionType(): ProtectionType;
getRange(): Range;
getRangeName(): string;
getUnprotectedRanges(): Range[];
isWarningOnly(): boolean;
remove(): void;
removeEditor(emailAddress: string): Protection;
removeEditor(user: Base.User): Protection;
removeEditors(emailAddresses: String[]): Protection;
setDescription(description: string): Protection;
setDomainEdit(editable: boolean): Protection;
setRange(range: Range): Protection;
setRangeName(rangeName: string): Protection;
setUnprotectedRanges(ranges: Range[]): Protection;
setWarningOnly(warningOnly: boolean): Protection;
}
/**
* An enumeration representing the parts of a spreadsheet that can be protected from edits.
*
* // Remove all range protections in the spreadsheet that the user has permission to edit.
* var ss = SpreadsheetApp.getActive();
* var protections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
* for (var i = 0; i < protections.length; i++) {
* var protection = protections[i];
* if (protection.canEdit()) {
* protection.remove();
* }
* }
*
* // Removes sheet protection from the active sheet, if the user has permission to edit it.
* var sheet = SpreadsheetApp.getActiveSheet();
* var protection = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET)[0];
* if (protection && protection.canEdit()) {
* protection.remove();
* }
*/
export enum ProtectionType { RANGE, SHEET }
/**
* Access and modify spreadsheet ranges.
*
* This class allows users to access and modify ranges in Google Sheets. A range can be
* a single cell in a sheet or a range of cells in a sheet.
*/
export interface Range {
activate(): Range;
breakApart(): Range;
canEdit(): boolean;
clear(): Range;
clear(options: Object): Range;
clearContent(): Range;
clearDataValidations(): Range;
clearFormat(): Range;
clearNote(): Range;
copyFormatToRange(gridId: Integer, column: Integer, columnEnd: Integer, row: Integer, rowEnd: Integer): void;
copyFormatToRange(sheet: Sheet, column: Integer, columnEnd: Integer, row: Integer, rowEnd: Integer): void;
copyTo(destination: Range): void;
copyTo(destination: Range, options: Object): void;
copyValuesToRange(gridId: Integer, column: Integer, columnEnd: Integer, row: Integer, rowEnd: Integer): void;
copyValuesToRange(sheet: Sheet, column: Integer, columnEnd: Integer, row: Integer, rowEnd: Integer): void;
getA1Notation(): string;
getBackground(): string;
getBackgrounds(): String[][];
getCell(row: Integer, column: Integer): Range;
getColumn(): Integer;
getDataSourceUrl(): string;
getDataTable(): Charts.DataTable;
getDataTable(firstRowIsHeader: boolean): Charts.DataTable;
getDataValidation(): DataValidation;
getDataValidations(): DataValidation[][];
getFontColor(): string;
getFontColors(): String[][];
getFontFamilies(): String[][];
getFontFamily(): string;
getFontLine(): string;
getFontLines(): String[][];
getFontSize(): Integer;
getFontSizes(): Integer[][];
getFontStyle(): string;
getFontStyles(): String[][];
getFontWeight(): string;
getFontWeights(): String[][];
getFormula(): string;
getFormulaR1C1(): string;
getFormulas(): String[][];
getFormulasR1C1(): String[][];
getGridId(): Integer;
getHeight(): Integer;
getHorizontalAlignment(): string;
getHorizontalAlignments(): String[][];
getLastColumn(): Integer;
getLastRow(): Integer;
getNote(): string;
getNotes(): String[][];
getNumColumns(): Integer;
getNumRows(): Integer;
getNumberFormat(): string;
getNumberFormats(): String[][];
getRow(): Integer;
getRowIndex(): Integer;
getSheet(): Sheet;
getValue(): Object;
getValues(): Object[][];
getVerticalAlignment(): string;
getVerticalAlignments(): String[][];
getWidth(): Integer;
getWrap(): boolean;
getWraps(): Boolean[][];
isBlank(): boolean;
isEndColumnBounded(): boolean;
isEndRowBounded(): boolean;
isStartColumnBounded(): boolean;
isStartRowBounded(): boolean;
merge(): Range;
mergeAcross(): Range;
mergeVertically(): Range;
moveTo(target: Range): void;
offset(rowOffset: Integer, columnOffset: Integer): Range;
offset(rowOffset: Integer, columnOffset: Integer, numRows: Integer): Range;
offset(rowOffset: Integer, columnOffset: Integer, numRows: Integer, numColumns: Integer): Range;
protect(): Protection;
setBackground(color: string): Range;
setBackgroundRGB(red: Integer, green: Integer, blue: Integer): Range;
setBackgrounds(color: String[][]): Range;
setBorder(top: boolean, left: boolean, bottom: boolean, right: boolean, vertical: boolean, horizontal: boolean): Range;
setDataValidation(rule: DataValidation): Range;
setDataValidations(rules: DataValidation[][]): Range;
setFontColor(color: string): Range;
setFontColors(colors: Object[][]): Range;
setFontFamilies(fontFamilies: Object[][]): Range;
setFontFamily(fontFamily: string): Range;
setFontLine(fontLine: string): Range;
setFontLines(fontLines: Object[][]): Range;
setFontSize(size: Integer): Range;
setFontSizes(sizes: Object[][]): Range;
setFontStyle(fontStyle: string): Range;
setFontStyles(fontStyles: Object[][]): Range;
setFontWeight(fontWeight: string): Range;
setFontWeights(fontWeights: Object[][]): Range;
setFormula(formula: string): Range;
setFormulaR1C1(formula: string): Range;
setFormulas(formulas: String[][]): Range;
setFormulasR1C1(formulas: String[][]): Range;
setHorizontalAlignment(alignment: string): Range;
setHorizontalAlignments(alignments: Object[][]): Range;
setNote(note: string): Range;
setNotes(notes: Object[][]): Range;
setNumberFormat(numberFormat: string): Range;
setNumberFormats(numberFormats: Object[][]): Range;
setValue(value: Object): Range;
setValues(values: Object[][]): Range;
setVerticalAlignment(alignment: string): Range;
setVerticalAlignments(alignments: Object[][]): Range;
setWrap(isWrapEnabled: boolean): Range;
setWraps(isWrapEnabled: Object[][]): Range;
sort(sortSpecObj: Object): Range;
}
/**
* Access and modify spreadsheet sheets. Common operations
* are renaming a sheet and accessing range objects from the sheet.
*/
export interface Sheet {
activate(): Sheet;
appendRow(rowContents: Object[]): Sheet;
autoResizeColumn(columnPosition: Integer): Sheet;
clear(): Sheet;
clear(options: Object): Sheet;
clearContents(): Sheet;
clearFormats(): Sheet;
clearNotes(): Sheet;
copyTo(spreadsheet: Spreadsheet): Sheet;
deleteColumn(columnPosition: Integer): Sheet;
deleteColumns(columnPosition: Integer, howMany: Integer): void;
deleteRow(rowPosition: Integer): Sheet;
deleteRows(rowPosition: Integer, howMany: Integer): void;
getActiveCell(): Range;
getActiveRange(): Range;
getCharts(): EmbeddedChart[];
getColumnWidth(columnPosition: Integer): Integer;
getDataRange(): Range;
getFrozenColumns(): Integer;
getFrozenRows(): Integer;
getIndex(): Integer;
getLastColumn(): Integer;
getLastRow(): Integer;
getMaxColumns(): Integer;
getMaxRows(): Integer;
getName(): string;
getParent(): Spreadsheet;
getProtections(type: ProtectionType): Protection[];
getRange(row: Integer, column: Integer): Range;
getRange(row: Integer, column: Integer, numRows: Integer): Range;
getRange(row: Integer, column: Integer, numRows: Integer, numColumns: Integer): Range;
getRange(a1Notation: string): Range;
getRowHeight(rowPosition: Integer): Integer;
getSheetId(): Integer;
getSheetName(): string;
getSheetValues(startRow: Integer, startColumn: Integer, numRows: Integer, numColumns: Integer): Object[][];
hideColumn(column: Range): void;
hideColumns(columnIndex: Integer): void;
hideColumns(columnIndex: Integer, numColumns: Integer): void;
hideRow(row: Range): void;
hideRows(rowIndex: Integer): void;
hideRows(rowIndex: Integer, numRows: Integer): void;
hideSheet(): Sheet;
insertChart(chart: EmbeddedChart): void;
insertColumnAfter(afterPosition: Integer): Sheet;
insertColumnBefore(beforePosition: Integer): Sheet;
insertColumns(columnIndex: Integer): void;
insertColumns(columnIndex: Integer, numColumns: Integer): void;
insertColumnsAfter(afterPosition: Integer, howMany: Integer): Sheet;
insertColumnsBefore(beforePosition: Integer, howMany: Integer): Sheet;
insertImage(blob: Base.Blob, column: Integer, row: Integer): void;
insertImage(blob: Base.Blob, column: Integer, row: Integer, offsetX: Integer, offsetY: Integer): void;
insertImage(url: string, column: Integer, row: Integer): void;
insertImage(url: string, column: Integer, row: Integer, offsetX: Integer, offsetY: Integer): void;
insertRowAfter(afterPosition: Integer): Sheet;
insertRowBefore(beforePosition: Integer): Sheet;
insertRows(rowIndex: Integer): void;
insertRows(rowIndex: Integer, numRows: Integer): void;
insertRowsAfter(afterPosition: Integer, howMany: Integer): Sheet;
insertRowsBefore(beforePosition: Integer, howMany: Integer): Sheet;
isSheetHidden(): boolean;
newChart(): EmbeddedChartBuilder;
protect(): Protection;
removeChart(chart: EmbeddedChart): void;
setActiveRange(range: Range): Range;
setActiveSelection(range: Range): Range;
setActiveSelection(a1Notation: string): Range;
setColumnWidth(columnPosition: Integer, width: Integer): Sheet;
setFrozenColumns(columns: Integer): void;
setFrozenRows(rows: Integer): void;
setName(name: string): Sheet;
setRowHeight(rowPosition: Integer, height: Integer): Sheet;
showColumns(columnIndex: Integer): void;
showColumns(columnIndex: Integer, numColumns: Integer): void;
showRows(rowIndex: Integer): void;
showRows(rowIndex: Integer, numRows: Integer): void;
showSheet(): Sheet;
sort(columnPosition: Integer): Sheet;
sort(columnPosition: Integer, ascending: boolean): Sheet;
unhideColumn(column: Range): void;
unhideRow(row: Range): void;
updateChart(chart: EmbeddedChart): void;
getSheetProtection(): PageProtection;
setSheetProtection(permissions: PageProtection): void;
}
/**
* This class allows users to access and modify Google Sheets files. Common operations are adding
* new sheets and adding collaborators.
*/
export interface Spreadsheet {
addEditor(emailAddress: string): Spreadsheet;
addEditor(user: Base.User): Spreadsheet;
addEditors(emailAddresses: String[]): Spreadsheet;
addMenu(name: string, subMenus: Object[]): void;
addViewer(emailAddress: string): Spreadsheet;
addViewer(user: Base.User): Spreadsheet;
addViewers(emailAddresses: String[]): Spreadsheet;
appendRow(rowContents: Object[]): Sheet;
autoResizeColumn(columnPosition: Integer): Sheet;
copy(name: string): Spreadsheet;
deleteActiveSheet(): Sheet;
deleteColumn(columnPosition: Integer): Sheet;
deleteColumns(columnPosition: Integer, howMany: Integer): void;
deleteRow(rowPosition: Integer): Sheet;
deleteRows(rowPosition: Integer, howMany: Integer): void;
deleteSheet(sheet: Sheet): void;
duplicateActiveSheet(): Sheet;
getActiveCell(): Range;
getActiveRange(): Range;
getActiveSheet(): Sheet;
getAs(contentType: string): Base.Blob;
getBlob(): Base.Blob;
getColumnWidth(columnPosition: Integer): Integer;
getDataRange(): Range;
getEditors(): Base.User[];
getFormUrl(): string;
getFrozenColumns(): Integer;
getFrozenRows(): Integer;
getId(): string;
getLastColumn(): Integer;
getLastRow(): Integer;
getName(): string;
getNumSheets(): Integer;
getOwner(): Base.User;
getProtections(type: ProtectionType): Protection[];
getRange(a1Notation: string): Range;
getRangeByName(name: string): Range;
getRowHeight(rowPosition: Integer): Integer;
getSheetByName(name: string): Sheet;
getSheetId(): Integer;
getSheetName(): string;
getSheetValues(startRow: Integer, startColumn: Integer, numRows: Integer, numColumns: Integer): Object[][];
getSheets(): Sheet[];
getSpreadsheetLocale(): string;
getSpreadsheetTimeZone(): string;
getUrl(): string;
getViewers(): Base.User[];
hideColumn(column: Range): void;
hideRow(row: Range): void;
insertColumnAfter(afterPosition: Integer): Sheet;
insertColumnBefore(beforePosition: Integer): Sheet;
insertColumnsAfter(afterPosition: Integer, howMany: Integer): Sheet;
insertColumnsBefore(beforePosition: Integer, howMany: Integer): Sheet;
insertImage(blob: Base.Blob, column: Integer, row: Integer): void;
insertImage(blob: Base.Blob, column: Integer, row: Integer, offsetX: Integer, offsetY: Integer): void;
insertImage(url: string, column: Integer, row: Integer): void;
insertImage(url: string, column: Integer, row: Integer, offsetX: Integer, offsetY: Integer): void;
insertRowAfter(afterPosition: Integer): Sheet;
insertRowBefore(beforePosition: Integer): Sheet;
insertRowsAfter(afterPosition: Integer, howMany: Integer): Sheet;
insertRowsBefore(beforePosition: Integer, howMany: Integer): Sheet;
insertSheet(): Sheet;
insertSheet(sheetIndex: Integer): Sheet;
insertSheet(sheetIndex: Integer, options: Object): Sheet;
insertSheet(options: Object): Sheet;
insertSheet(sheetName: string): Sheet;
insertSheet(sheetName: string, sheetIndex: Integer): Sheet;
insertSheet(sheetName: string, sheetIndex: Integer, options: Object): Sheet;
insertSheet(sheetName: string, options: Object): Sheet;
moveActiveSheet(pos: Integer): void;
removeEditor(emailAddress: string): Spreadsheet;
removeEditor(user: Base.User): Spreadsheet;
removeMenu(name: string): void;
removeNamedRange(name: string): void;
removeViewer(emailAddress: string): Spreadsheet;
removeViewer(user: Base.User): Spreadsheet;
rename(newName: string): void;
renameActiveSheet(newName: string): void;
setActiveRange(range: Range): Range;
setActiveSelection(range: Range): Range;
setActiveSelection(a1Notation: string): Range;
setActiveSheet(sheet: Sheet): Sheet;
setColumnWidth(columnPosition: Integer, width: Integer): Sheet;
setFrozenColumns(columns: Integer): void;
setFrozenRows(rows: Integer): void;
setNamedRange(name: string, range: Range): void;
setRowHeight(rowPosition: Integer, height: Integer): Sheet;
setSpreadsheetLocale(locale: string): void;
setSpreadsheetTimeZone(timezone: string): void;
show(userInterface: Object): void;
sort(columnPosition: Integer): Sheet;
sort(columnPosition: Integer, ascending: boolean): Sheet;
toast(msg: string): void;
toast(msg: string, title: string): void;
toast(msg: string, title: string, timeoutSeconds: Number): void;
unhideColumn(column: Range): void;
unhideRow(row: Range): void;
updateMenu(name: string, subMenus: Object[]): void;
getSheetProtection(): PageProtection;
isAnonymousView(): boolean;
isAnonymousWrite(): boolean;
setAnonymousAccess(anonymousReadAllowed: boolean, anonymousWriteAllowed: boolean): void;
setSheetProtection(permissions: PageProtection): void;
}
/**
* This class allows users to open Google Sheets files and to create new ones. This class is
* the parent class for the Spreadsheet service.
*/
export interface SpreadsheetApp {
DataValidationCriteria: DataValidationCriteria
ProtectionType: ProtectionType
create(name: string): Spreadsheet;
create(name: string, rows: Integer, columns: Integer): Spreadsheet;
flush(): void;
getActive(): Spreadsheet;
getActiveRange(): Range;
getActiveSheet(): Sheet;
getActiveSpreadsheet(): Spreadsheet;
getUi(): Base.Ui;
newDataValidation(): DataValidationBuilder;
open(file: Drive.File): Spreadsheet;
openById(id: string): Spreadsheet;
openByUrl(url: string): Spreadsheet;
setActiveRange(range: Range): Range;
setActiveSheet(sheet: Sheet): Sheet;
setActiveSpreadsheet(newActiveSpreadsheet: Spreadsheet): void;
}
}
}
declare var SpreadsheetApp: GoogleAppsScript.Spreadsheet.SpreadsheetApp;
+7
View File
@@ -0,0 +1,7 @@
declare module GoogleAppsScript {
type BigNumber = any;
type Byte = number;
type Integer = number;
type Char = string;
type JdbcSQL_XML = any;
}
File diff suppressed because it is too large Load Diff
+72
View File
@@ -0,0 +1,72 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module URL_Fetch {
/**
* This class allows users to access specific information on HTTP responses.
* See also
*
* UrlFetchApp
*/
export interface HTTPResponse {
getAllHeaders(): Object;
getAs(contentType: string): Base.Blob;
getBlob(): Base.Blob;
getContent(): Byte[];
getContentText(): string;
getContentText(charset: string): string;
getHeaders(): Object;
getResponseCode(): Integer;
}
/**
*
* Deprecated. This class is deprecated and should not be used in new scripts.
* Represents configuration settings for an OAuth-enabled remote service.
* See also
*
* UrlFetchApp
*/
export interface OAuthConfig {
getAccessTokenUrl(): string;
getAuthorizationUrl(): string;
getMethod(): string;
getParamLocation(): string;
getRequestTokenUrl(): string;
getServiceName(): string;
setAccessTokenUrl(url: string): void;
setAuthorizationUrl(url: string): void;
setConsumerKey(consumerKey: string): void;
setConsumerSecret(consumerSecret: string): void;
setMethod(method: string): void;
setParamLocation(location: string): void;
setRequestTokenUrl(url: string): void;
}
/**
* Fetch resources and communicate with other hosts over the Internet.
*
* This service allows scripts to communicate with other applications or access other resources on
* the web by fetching URLs. A script can use the URL Fetch service to issue HTTP and HTTPS requests
* and receive responses. The URL Fetch service uses Google's network infrastructure for efficiency
* and scaling purposes.
* See also
*
* OAuthConfig
*
* HTTPResponse
*/
export interface UrlFetchApp {
fetch(url: string): HTTPResponse;
fetch(url: string, params: Object): HTTPResponse;
getRequest(url: string): Object;
getRequest(url: string, params: Object): Object;
addOAuthService(serviceName: string): OAuthConfig;
removeOAuthService(serviceName: string): void;
}
}
}
declare var UrlFetchApp: GoogleAppsScript.URL_Fetch.UrlFetchApp;
+71
View File
@@ -0,0 +1,71 @@
/// <reference path="google-apps-script.types.d.ts" />
/// <reference path="google-apps-script.base.d.ts" />
declare module GoogleAppsScript {
export module Utilities {
/**
* A typesafe enum for character sets.
*/
export enum Charset { US_ASCII, UTF_8 }
/**
* Selector of Digest algorithm
*/
export enum DigestAlgorithm { MD2, MD5, SHA_1, SHA_256, SHA_384, SHA_512 }
/**
* Selector of MAC algorithm
*/
export enum MacAlgorithm { HMAC_MD5, HMAC_SHA_1, HMAC_SHA_256, HMAC_SHA_384, HMAC_SHA_512 }
/**
* This service provides utilities for string encoding/decoding, date formatting, JSON manipulation,
* and other miscellaneous tasks.
*/
export interface Utilities {
Charset: Charset
DigestAlgorithm: DigestAlgorithm
MacAlgorithm: MacAlgorithm
base64Decode(encoded: string): Byte[];
base64Decode(encoded: string, charset: Charset): Byte[];
base64DecodeWebSafe(encoded: string): Byte[];
base64DecodeWebSafe(encoded: string, charset: Charset): Byte[];
base64Encode(data: Byte[]): string;
base64Encode(data: string): string;
base64Encode(data: string, charset: Charset): string;
base64EncodeWebSafe(data: Byte[]): string;
base64EncodeWebSafe(data: string): string;
base64EncodeWebSafe(data: string, charset: Charset): string;
computeDigest(algorithm: DigestAlgorithm, value: string): Byte[];
computeDigest(algorithm: DigestAlgorithm, value: string, charset: Charset): Byte[];
computeHmacSha256Signature(value: string, key: string): Byte[];
computeHmacSha256Signature(value: string, key: string, charset: Charset): Byte[];
computeHmacSignature(algorithm: MacAlgorithm, value: string, key: string): Byte[];
computeHmacSignature(algorithm: MacAlgorithm, value: string, key: string, charset: Charset): Byte[];
computeRsaSha256Signature(value: string, key: string): Byte[];
computeRsaSha256Signature(value: string, key: string, charset: Charset): Byte[];
formatDate(date: Date, timeZone: string, format: string): string;
formatString(template: string, ...args: Object[]): string;
newBlob(data: Byte[]): Base.Blob;
newBlob(data: Byte[], contentType: string): Base.Blob;
newBlob(data: Byte[], contentType: string, name: string): Base.Blob;
newBlob(data: string): Base.Blob;
newBlob(data: string, contentType: string): Base.Blob;
newBlob(data: string, contentType: string, name: string): Base.Blob;
parseCsv(csv: string): String[][];
parseCsv(csv: string, delimiter: Char): String[][];
sleep(milliseconds: Integer): void;
unzip(blob: Base.BlobSource): Base.Blob[];
zip(blobs: Base.BlobSource[]): Base.Blob;
zip(blobs: Base.BlobSource[], name: string): Base.Blob;
jsonParse(jsonString: string): Object;
jsonStringify(obj: Object): string;
}
}
}
declare var Charset: GoogleAppsScript.Utilities.Charset;
declare var DigestAlgorithm: GoogleAppsScript.Utilities.DigestAlgorithm;
declare var MacAlgorithm: GoogleAppsScript.Utilities.MacAlgorithm;
declare var Utilities: GoogleAppsScript.Utilities.Utilities;
+342
View File
@@ -0,0 +1,342 @@
/// <reference path="google-apps-script.types.d.ts" />
declare module GoogleAppsScript {
export module XML_Service {
/**
* A representation of an XML attribute.
*
* // Reads the first and last name of each person and adds a new attribute with the full name.
* var xml = '<roster>'
* + '<person first="John" last="Doe"/>'
* + '<person first="Mary" last="Smith"/>'
* + '</roster>';
* var document = XmlService.parse(xml);
* var people = document.getRootElement().getChildren('person');
* for (var i = 0; i < people.length; i++) {
* var person = people[i];
* var firstName = person.getAttribute('first').getValue();
* var lastName = person.getAttribute('last').getValue();
* person.setAttribute('full', firstName + ' ' + lastName);
* }
* xml = XmlService.getPrettyFormat().format(document);
* Logger.log(xml);
*/
export interface Attribute {
getName(): string;
getNamespace(): Namespace;
getValue(): string;
setName(name: string): Attribute;
setNamespace(namespace: Namespace): Attribute;
setValue(value: string): Attribute;
}
/**
* A representation of an XML CDATASection node.
*
* // Create and log an XML document that shows how special characters like '<', '>', and '&' are
* // stored in a CDATASection node as compared to in a Text node.
* var illegalCharacters = '<em>The Amazing Adventures of Kavalier & Clay</em>';
* var cdata = XmlService.createCdata(illegalCharacters);
* var text = XmlService.createText(illegalCharacters);
* var root = XmlService.createElement('root').addContent(cdata).addContent(text);
* var document = XmlService.createDocument(root);
* var xml = XmlService.getPrettyFormat().format(document);
* Logger.log(xml);
*/
export interface Cdata {
append(text: string): Text;
detach(): Content;
getParentElement(): Element;
getText(): string;
getValue(): string;
setText(text: string): Text;
}
/**
* A representation of an XML Comment node.
*/
export interface Comment {
detach(): Content;
getParentElement(): Element;
getText(): string;
getValue(): string;
setText(text: string): Comment;
}
/**
* A representation of a generic XML node.
* Implementing classes
*
* NameBrief description
*
* CdataA representation of an XML CDATASection node.
*
* CommentA representation of an XML Comment node.
*
* DocTypeA representation of an XML DocumentType node.
*
* ElementA representation of an XML Element node.
*
* EntityRefA representation of an XML EntityReference node.
*
* ProcessingInstructionA representation of an XML ProcessingInstruction node.
*
* TextA representation of an XML Text node.
*/
export interface Content {
asCdata(): Cdata;
asComment(): Comment;
asDocType(): DocType;
asElement(): Element;
asEntityRef(): EntityRef;
asProcessingInstruction(): ProcessingInstruction;
asText(): Text;
detach(): Content;
getParentElement(): Element;
getType(): ContentType;
getValue(): string;
}
/**
* An enumeration representing the types of XML content nodes.
*/
export enum ContentType { CDATA, COMMENT, DOCTYPE, ELEMENT, ENTITYREF, PROCESSINGINSTRUCTION, TEXT }
/**
* A representation of an XML DocumentType node.
*/
export interface DocType {
detach(): Content;
getElementName(): string;
getInternalSubset(): string;
getParentElement(): Element;
getPublicId(): string;
getSystemId(): string;
getValue(): string;
setElementName(name: string): DocType;
setInternalSubset(data: string): DocType;
setPublicId(id: string): DocType;
setSystemId(id: string): DocType;
}
/**
* A representation of an XML document.
*/
export interface Document {
addContent(content: Content): Document;
addContent(index: Integer, content: Content): Document;
cloneContent(): Content[];
detachRootElement(): Element;
getAllContent(): Content[];
getContent(index: Integer): Content;
getContentSize(): Integer;
getDescendants(): Content[];
getDocType(): DocType;
getRootElement(): Element;
hasRootElement(): boolean;
removeContent(): Content[];
removeContent(content: Content): boolean;
removeContent(index: Integer): Content;
setDocType(docType: DocType): Document;
setRootElement(element: Element): Document;
}
/**
* A representation of an XML Element node.
*
* // Adds up the values listed in a sample XML document and adds a new element with the total.
* var xml = '<things>'
* + '<plates>12</plates>'
* + '<bowls>18</bowls>'
* + '<cups>25</cups>'
* + '</things>';
* var document = XmlService.parse(xml);
* var root = document.getRootElement();
* var items = root.getChildren();
* var total = 0;
* for (var i = 0; i < items.length; i++) {
* total += Number(items[i].getText());
* }
* var totalElement = XmlService.createElement('total').setText(total);
* root.addContent(totalElement);
* xml = XmlService.getPrettyFormat().format(document);
* Logger.log(xml);
*/
export interface Element {
addContent(content: Content): Element;
addContent(index: Integer, content: Content): Element;
cloneContent(): Content[];
detach(): Content;
getAllContent(): Content[];
getAttribute(name: string): Attribute;
getAttribute(name: string, namespace: Namespace): Attribute;
getAttributes(): Attribute[];
getChild(name: string): Element;
getChild(name: string, namespace: Namespace): Element;
getChildText(name: string): string;
getChildText(name: string, namespace: Namespace): string;
getChildren(): Element[];
getChildren(name: string): Element[];
getChildren(name: string, namespace: Namespace): Element[];
getContent(index: Integer): Content;
getContentSize(): Integer;
getDescendants(): Content[];
getDocument(): Document;
getName(): string;
getNamespace(): Namespace;
getNamespace(prefix: string): Namespace;
getParentElement(): Element;
getQualifiedName(): string;
getText(): string;
getValue(): string;
isAncestorOf(other: Element): boolean;
isRootElement(): boolean;
removeAttribute(attribute: Attribute): boolean;
removeAttribute(attributeName: string): boolean;
removeAttribute(attributeName: string, namespace: Namespace): boolean;
removeContent(): Content[];
removeContent(content: Content): boolean;
removeContent(index: Integer): Content;
setAttribute(attribute: Attribute): Element;
setAttribute(name: string, value: string): Element;
setAttribute(name: string, value: string, namespace: Namespace): Element;
setName(name: string): Element;
setNamespace(namespace: Namespace): Element;
setText(text: string): Element;
}
/**
* A representation of an XML EntityReference node.
*/
export interface EntityRef {
detach(): Content;
getName(): string;
getParentElement(): Element;
getPublicId(): string;
getSystemId(): string;
getValue(): string;
setName(name: string): EntityRef;
setPublicId(id: string): EntityRef;
setSystemId(id: string): EntityRef;
}
/**
* A formatter for outputting an XML document, with three pre-defined formats that can be further
* customized.
*
* // Log an XML document with specified formatting options.
* var xml = '<root><a><b>Text!</b><b>More text!</b></a></root>';
* var document = XmlService.parse(xml);
* var output = XmlService.getCompactFormat()
* .setLineSeparator('\n')
* .setEncoding('UTF-8')
* .setIndent(' ')
* .format(document);
* Logger.log(output);
*/
export interface Format {
format(document: Document): string;
format(element: Element): string;
setEncoding(encoding: string): Format;
setIndent(indent: string): Format;
setLineSeparator(separator: string): Format;
setOmitDeclaration(omitDeclaration: boolean): Format;
setOmitEncoding(omitEncoding: boolean): Format;
}
/**
* A representation of an XML namespace.
*/
export interface Namespace {
getPrefix(): string;
getURI(): string;
}
/**
* A representation of an XML ProcessingInstruction node.
*/
export interface ProcessingInstruction {
detach(): Content;
getData(): string;
getParentElement(): Element;
getTarget(): string;
getValue(): string;
}
/**
* A representation of an XML Text node.
*/
export interface Text {
append(text: string): Text;
detach(): Content;
getParentElement(): Element;
getText(): string;
getValue(): string;
setText(text: string): Text;
}
/**
* This service allows scripts to parse, navigate, and programmatically create XML documents.
*
* // Log the title and labels for the first page of blog posts on the Google Apps Developer blog.
* function parseXml() {
* var url = 'http://googleappsdeveloper.blogspot.com/atom.xml';
* var xml = UrlFetchApp.fetch(url).getContentText();
* var document = XmlService.parse(xml);
* var root = document.getRootElement();
* var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom');
*
* var entries = document.getRootElement().getChildren('entry', atom);
* for (var i = 0; i < entries.length; i++) {
* var title = entries[i].getChild('title', atom).getText();
* var categoryElements = entries[i].getChildren('category', atom);
* var labels = [];
* for (var j = 0; j < categoryElements.length; j++) {
* labels.push(categoryElements[j].getAttribute('term').getValue());
* }
* Logger.log('%s (%s)', title, labels.join(', '));
* }
* }
*
* // Create and log an XML representation of the threads in your Gmail inbox.
* function createXml() {
* var root = XmlService.createElement('threads');
* var threads = GmailApp.getInboxThreads();
* for (var i = 0; i < threads.length; i++) {
* var child = XmlService.createElement('thread')
* .setAttribute('messageCount', threads[i].getMessageCount())
* .setAttribute('isUnread', threads[i].isUnread())
* .setText(threads[i].getFirstMessageSubject());
* root.addContent(child);
* }
* var document = XmlService.createDocument(root);
* var xml = XmlService.getPrettyFormat().format(document);
* Logger.log(xml);
* }
*/
export interface XmlService {
ContentTypes: ContentType
createCdata(text: string): Cdata;
createComment(text: string): Comment;
createDocType(elementName: string): DocType;
createDocType(elementName: string, systemId: string): DocType;
createDocType(elementName: string, publicId: string, systemId: string): DocType;
createDocument(): Document;
createDocument(rootElement: Element): Document;
createElement(name: string): Element;
createElement(name: string, namespace: Namespace): Element;
createText(text: string): Text;
getCompactFormat(): Format;
getNamespace(uri: string): Namespace;
getNamespace(prefix: string, uri: string): Namespace;
getNoNamespace(): Namespace;
getPrettyFormat(): Format;
getRawFormat(): Format;
getXmlNamespace(): Namespace;
parse(xml: string): Document;
}
}
}
declare var XmlService: GoogleAppsScript.XML_Service.XmlService;