///
///
declare namespace GoogleAppsScript {
namespace Gmail {
/**
* Provides access to Gmail threads, messages, and labels.
*/
interface GmailApp {
createDraft(recipient: string, subject: string, body: string): GmailDraft;
createDraft(recipient: string, subject: string, body: string, options: GmailAdvancedOptions): GmailDraft;
createLabel(name: string): GmailLabel;
deleteLabel(label: GmailLabel): GmailApp;
getAliases(): string[];
getChatThreads(): GmailThread[];
getChatThreads(start: Integer, max: Integer): GmailThread[];
getDraft(draftId: string): GmailDraft;
getDraftMessages(): GmailMessage[];
getDrafts(): GmailDraft[];
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: GmailAdvancedOptions): GmailApp;
setCurrentMessageAccessToken(accessToken: string): void;
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());
* }
* }
* }
*/
interface GmailAttachment {
copyBlob(): Base.Blob;
getAs(contentType: string): Base.Blob;
getBytes(): Byte[];
getContentType(): string;
getDataAsString(): string;
getDataAsString(charset: string): string;
getHash(): 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;
/** @deprecated DO NOT USE */ getAllBlobs(): Base.Blob[];
}
/**
* A user-created draft message in a user's Gmail account.
*/
interface GmailDraft {
/**
* Deletes this draft message.
*/
deleteDraft(): void;
/**
* Gets the ID of this draft message.
*/
getId(): string;
/**
* Returns a GmailMessage representing this draft.
*/
getMessage(): GmailMessage;
/**
* Returns the ID of the `GmailMessage` representing this draft.
*/
getMessageId(): string;
/**
* Sends this draft email message.
*/
send(): GmailMessage;
/**
* Replaces the contents of this draft message.
*/
update(recipient: string, subject: string, body: string): GmailDraft;
/**
* Replaces the contents of this draft message using optional arguments.
*/
update(recipient: string, subject: string, body: string, options: GmailAdvancedOptions): GmailDraft;
}
/**
* Options for a Gmail draft.
*/
interface GmailAdvancedOptions {
/**
* An array of files to send with the email.
*/
attachments?: Base.BlobSource[] | undefined;
/**
* A comma-separated list of email addresses to BCC.
*/
bcc?: string | undefined;
/**
* A comma-separated list of email addresses to CC.
*/
cc?: string | undefined;
/**
* The address that the email should be sent from, which must be one of the values returned by `GmailApp.getAliases()`.
*/
from?: string | undefined;
/**
* If set, devices capable of rendering HTML will use it instead of the required body argument; you can add an optional `inlineImages` field in HTML body if you have inlined images for your email.
*/
htmlBody?: string | undefined;
/**
* A JavaScript object containing a mapping from image key (`String`) to image data (`BlobSource`) ; this assumes that the `htmlBody` parameter is used and contains references to these images in the format ``.
*/
inlineImages?: { [imageKey: string]: Base.BlobSource } | undefined;
/**
* The name of the sender of the email (default: the user's name).
*/
name?: string | undefined;
/**
* True if the email should be sent from a generic no-reply email address to discourage recipients from responding to emails; this option is only possible for Google Workspace accounts, not Gmail users.
*/
noReply?: boolean | undefined;
/**
* An email address to use as the default reply-to address (default: the user's email address).
*/
replyTo?: string | undefined;
}
/** alias to GmailAdvancedOptions */
type GmailDraftOptions = GmailAdvancedOptions;
/**
* Options for a Gmail Attachments.
*/
interface GmailAttachmentOptions {
/**
* If the returned array of Blob attachments should include inline images.
*/
includeInlineImages?: boolean | undefined;
/**
* If the returned array of Blob attachments should include regular (non-inline) attachments.
*/
includeAttachments?: boolean | undefined;
/**
* A comma-separated list of email addresses to BCC.
*/
}
/**
* A user-created label in a user's Gmail account.
*/
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.
*/
interface GmailMessage {
createDraftReply(body: string): GmailDraft;
createDraftReply(body: string, options: GmailAdvancedOptions): GmailDraft;
createDraftReplyAll(body: string): GmailDraft;
createDraftReplyAll(body: string, options: GmailAdvancedOptions): GmailDraft;
forward(recipient: string): GmailMessage;
forward(recipient: string, options: GmailAdvancedOptions): GmailMessage;
getAttachments(): GmailAttachment[];
getAttachments(options: GmailAttachmentOptions): GmailAttachment[];
getBcc(): string;
getBody(): string;
getCc(): string;
getDate(): Base.Date;
getFrom(): string;
getHeader(name: string): string;
getId(): string;
getPlainBody(): string;
getRawContent(): string;
getReplyTo(): string;
getSubject(): string;
getThread(): GmailThread;
getTo(): string;
isDraft(): boolean;
isInChats(): boolean;
isInInbox(): boolean;
isInPriorityInbox(): boolean;
isInTrash(): boolean;
isStarred(): boolean;
isUnread(): boolean;
markRead(): GmailMessage;
markUnread(): GmailMessage;
moveToTrash(): GmailMessage;
refresh(): GmailMessage;
reply(body: string): GmailMessage;
reply(body: string, options: GmailAdvancedOptions): GmailMessage;
replyAll(body: string): GmailMessage;
replyAll(body: string, options: GmailAdvancedOptions): GmailMessage;
star(): GmailMessage;
unstar(): GmailMessage;
}
/**
* A thread in a user's Gmail account.
*/
interface GmailThread {
addLabel(label: GmailLabel): GmailThread;
createDraftReply(body: string): GmailDraft;
createDraftReply(body: string, options: GmailAdvancedOptions): GmailDraft;
createDraftReplyAll(body: string): GmailDraft;
createDraftReplyAll(body: string, options: GmailAdvancedOptions): GmailDraft;
getFirstMessageSubject(): string;
getId(): string;
getLabels(): GmailLabel[];
getLastMessageDate(): Base.Date;
getMessageCount(): Integer;
getMessages(): GmailMessage[];
getPermalink(): string;
hasStarredMessages(): boolean;
isImportant(): boolean;
isInChats(): boolean;
isInInbox(): boolean;
isInPriorityInbox(): 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: GmailAdvancedOptions): GmailThread;
replyAll(body: string): GmailThread;
replyAll(body: string, options: GmailAdvancedOptions): GmailThread;
}
}
}
declare var GmailApp: GoogleAppsScript.Gmail.GmailApp;