gas-types-detailed
Version:
Enhanced Google Apps Script Type Definitions with detailed documentation. Includes type definitions plus code snippets, return values, required authorization scopes, and other details not found in @types/google-apps-script.
169 lines (160 loc) • 8.03 kB
TypeScript
// Type definitions for Google Apps Script 2025-11-10
// Project: https://developers.google.com/apps-script/
// Definitions by: motemen <https://github.com/motemen/>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/// <reference path="google-apps-script.types.d.ts" />
declare namespace GoogleAppsScript {
namespace 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.
*/
interface MailApp {
/**
* Returns the number of recipients you can send emails to for the rest of the day. The returned value is valid for the current execution and might vary between executions.
* Quotas are based on the number of email recipients. For specific quota information, see Quotas for Google Services.
*
* const emailQuotaRemaining = MailApp.getRemainingDailyQuota();
* Logger.log(`Remaining email quota: ${emailQuotaRemaining}`);
*
* Return:
* - Integer — The number of emails remaining that the script can send.
*
* Authorization:
*
* Scripts that use this method require authorization with one or more of the following scopes:
* - https://www.googleapis.com/auth/script.send_mail
*
* https://developers.google.com/apps-script/reference/mail/mail-app#getRemainingDailyQuota()
*/
getRemainingDailyQuota(): Integer;
/**
* Sends an email message. This variation of the method is much more flexible, allowing for many more options.
*
* // This code fetches the Google and YouTube logos, inlines them in an email
* // and sends the email
* function inlineImage() {
* const googleLogoUrl =
* 'https://www.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_74x24dp.png';
* const youtubeLogoUrl =
* 'https://developers.google.com/youtube/images/YouTube_logo_standard_white.png';
* const googleLogoBlob =
* UrlFetchApp.fetch(googleLogoUrl).getBlob().setName('googleLogoBlob');
* const youtubeLogoBlob =
* UrlFetchApp.fetch(youtubeLogoUrl).getBlob().setName('youtubeLogoBlob');
* MailApp.sendEmail({
* to: 'recipient@example.com',
* subject: 'Logos',
* htmlBody: 'inline Google Logo<img src=\'cid:googleLogo\'> images! <br>' +
* 'inline YouTube Logo <img src=\'cid:youtubeLogo\'>',
* inlineImages: {
* googleLogo: googleLogoBlob,
* youtubeLogo: youtubeLogoBlob,
* },
* });
* }
*
* Authorization:
*
* Scripts that use this method require authorization with one or more of the following scopes:
* - https://www.googleapis.com/auth/script.send_mail
*
* https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(Object)
* @param message a JavaScript object representing an email message
*/
sendEmail(message: any): void;
/**
* Sends an email message.
*
* MailApp.sendEmail(
* 'recipient@example.com',
* 'TPS reports',
* 'Where are the TPS reports?',
* );
*
* Authorization:
*
* Scripts that use this method require authorization with one or more of the following scopes:
* - https://www.googleapis.com/auth/script.send_mail
*
* https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(String,String,String)
* @param recipient the addresses of the recipients, separated by commas
* @param subject the subject line
* @param body the body of the email
*/
sendEmail(recipient: string, subject: string, body: string): void;
/**
* Sends an email message with optional arguments.
*
* // Send an email with two attachments: a file from Google Drive (as a PDF) and
* // an HTML file.
* const file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz');
* const blob = Utilities.newBlob(
* 'Insert any HTML content here',
* 'text/html',
* 'my_document.html',
* );
* MailApp.sendEmail(
* 'mike@example.com',
* 'Attachment example',
* 'Two files are attached.',
* {
* name: 'Automatic Emailer Script',
* attachments: [file.getAs(MimeType.PDF), blob],
* },
* );
*
* Authorization:
*
* Scripts that use this method require authorization with one or more of the following scopes:
* - https://www.googleapis.com/auth/script.send_mail
*
* https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(String,String,String,Object)
* @param recipient the addresses of the recipients, separated by commas
* @param subject the subject line
* @param body the body of the email
* @param options a JavaScript object that specifies advanced parameters, as listed below
*
* Advanced parameters:
* - attachments (BlobSource[]) — an array of files to send with the email (see example)
* - bcc (String) — a comma-separated list of email addresses to BCC
* - cc (String) — a comma-separated list of email addresses to CC
* - htmlBody (String) — 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
* - inlineImages (Object) — 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 <img src="cid:imageKey" />
* - name (String) — the name of the sender of the email (default: the user's name)
* - noReply (Boolean) — 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
* - replyTo (String) — an email address to use as the default reply-to address (default: the user's email address)
*/
sendEmail(recipient: string, subject: string, body: string, options: any): void;
/**
* Sends an email message. This method allows a user to easily specify a Reply-To address for the sent message that can differ from the sender.
*
* MailApp.sendEmail(
* 'recipient@example.com',
* 'replies@example.com',
* 'TPS report status',
* 'What is the status of those TPS reports?',
* );
*
* Authorization:
*
* Scripts that use this method require authorization with one or more of the following scopes:
* - https://www.googleapis.com/auth/script.send_mail
*
* https://developers.google.com/apps-script/reference/mail/mail-app#sendEmail(String,String,String,String)
* @param to the addresses of the recipients, separated by commas
* @param replyTo the reply-to address
* @param subject the subject line
* @param body the body of the email in plain text
*/
sendEmail(to: string, replyTo: string, subject: string, body: string): void;
}
}
}
declare var MailApp: GoogleAppsScript.Mail.MailApp;