Class GmailApp

Gmail 应用

提供对 Gmail 线程、邮件和标签的访问权限。

方法

方法返回类型简介
createDraft(recipient, subject, body)GmailDraft创建电子邮件草稿。
createDraft(recipient, subject, body, options)GmailDraft创建一封电子邮件草稿,可使用可选实参。
createLabel(name)GmailLabel创建具有指定名称的新用户标签。
deleteLabel(label)GmailApp删除指定的标签。
getAliases()String[]获取在 Gmail 中设置为相应账号的别名的电子邮件的列表。
getDraft(draftId)GmailDraft按 ID 检索电子邮件草稿。
getDraftMessages()GmailMessage[]检索所有草稿邮件。
getDrafts()GmailDraft[]获取所有 Gmail 草稿邮件。
getInboxThreads()GmailThread[]检索所有收件箱会话,无论其是否带有标签。
getInboxThreads(start, max)GmailThread[]检索一系列收件箱会话,而不考虑标签。
getInboxUnreadCount()Integer获取收件箱中未读消息串的数量。
getMessageById(id)GmailMessage根据 ID 获取消息。
getMessagesForThread(thread)GmailMessage[]检索指定会话串中的所有邮件。
getMessagesForThreads(threads)GmailMessage[][]检索指定会话串中的所有邮件。
getPriorityInboxThreads()GmailThread[]检索所有优先收件箱对话串,无论其标签如何。
getPriorityInboxThreads(start, max)GmailThread[]检索一系列优先收件箱会话,而不考虑标签。
getPriorityInboxUnreadCount()Integer获取“优先收件箱”中未读会话的数量。
getSpamThreads()GmailThread[]检索所有垃圾内容会话,无论其标签如何。
getSpamThreads(start, max)GmailThread[]检索一系列垃圾邮件会话,而不考虑标签。
getSpamUnreadCount()Integer获取垃圾邮件未读消息串的数量。
getStarredThreads()GmailThread[]检索所有加星标的对话串,无论其标签如何。
getStarredThreads(start, max)GmailThread[]检索一系列已加星标的对话串,无论其是否带有标签。
getStarredUnreadCount()Integer获取已加星标的未读对话数量。
getThreadById(id)GmailThread|null根据 ID 获取一个帖子。
getTrashThreads()GmailThread[]检索所有回收站中的会话,无论其标签如何。
getTrashThreads(start, max)GmailThread[]检索一系列回收站中的线程,而不考虑标签。
getUserLabelByName(name)GmailLabel根据标签名称检索标签。
getUserLabels()GmailLabel[]检索用户创建的标签的列表。
markMessageRead(message)GmailApp将相应消息标记为已读,并强制刷新消息。
markMessageUnread(message)GmailApp将相应消息标记为未读,并强制刷新该消息。
markMessagesRead(messages)GmailApp将这些消息标记为已读,并强制刷新消息。
markMessagesUnread(messages)GmailApp将这些消息标记为未读,并强制刷新消息。
markThreadImportant(thread)GmailApp将相应消息串标记为重要,并强制刷新该消息串。
markThreadRead(thread)GmailApp将相应消息串标记为已读,并强制刷新该消息串。
markThreadUnimportant(thread)GmailApp将相应消息串标记为不重要,并强制刷新该消息串。
markThreadUnread(thread)GmailApp将相应消息串标记为未读,并强制刷新该消息串。
markThreadsImportant(threads)GmailApp将这些线程标记为重要线程,并强制刷新这些线程。
markThreadsRead(threads)GmailApp将这些消息串标记为已读,并强制刷新消息串。
markThreadsUnimportant(threads)GmailApp将这些消息串标记为不重要,并强制刷新消息串。
markThreadsUnread(threads)GmailApp将这些消息串标记为未读,并强制刷新消息串。
moveMessageToTrash(message)GmailApp将邮件移至回收站,并强制刷新邮件。
moveMessagesToTrash(messages)GmailApp将指定的消息移至回收站,并强制刷新消息。
moveThreadToArchive(thread)GmailApp将相应线程移至归档,并强制刷新该线程。
moveThreadToInbox(thread)GmailApp将相应对话串移至收件箱,并强制刷新该对话串。
moveThreadToSpam(thread)GmailApp将相应对话串移至“垃圾内容”文件夹,并强制刷新该对话串。
moveThreadToTrash(thread)GmailApp将相应线程移至回收站,并强制刷新该线程。
moveThreadsToArchive(threads)GmailApp将这些线程移至归档文件夹,并强制刷新线程。
moveThreadsToInbox(threads)GmailApp将这些会话移至收件箱,并强制刷新会话。
moveThreadsToSpam(threads)GmailApp将这些对话移至“垃圾内容”文件夹,并强制刷新对话。
moveThreadsToTrash(threads)GmailApp将相应对话移至回收站,并强制刷新对话。
refreshMessage(message)GmailApp从 Gmail 重新加载消息和关联状态(如果标签、已读状态等发生变化,此方法非常有用)。
refreshMessages(messages)GmailApp从 Gmail 重新加载消息和关联状态(如果标签、已读状态等发生变化,此方法非常有用)。
refreshThread(thread)GmailApp从 Gmail 重新加载会话和关联状态(如果标签、已读状态等发生变化,此方法非常有用)。
refreshThreads(threads)GmailApp从 Gmail 重新加载会话和关联状态(如果标签、已读状态等发生更改,此方法非常有用)。
search(query)GmailThread[]使用指定查询内容搜索 Gmail。
search(query, start, max)GmailThread[]使用指定查询内容搜索 Gmail。
sendEmail(recipient, subject, body)GmailApp发送电子邮件。
sendEmail(recipient, subject, body, options)GmailApp发送包含可选实参的电子邮件。
setCurrentMessageAccessToken(accessToken)void设置当前消息访问令牌,使脚本能够访问当前的 GmailMessage 属性。
starMessage(message)GmailApp为相应消息添加星标,并强制刷新该消息。
starMessages(messages)GmailApp为这些消息添加星标,并强制刷新消息。
unstarMessage(message)GmailApp从此消息中移除星标,并强制刷新消息。
unstarMessages(messages)GmailApp移除这些消息的星标,并强制刷新消息。

详细文档

createDraft(recipient, subject, body)

创建电子邮件草稿。电子邮件的大小(包括标题)受配额限制

// The code below creates a draft email with the current date and time.
const now = new Date();
GmailApp.createDraft(
    'mike@example.com',
    'current time',
    `The time is: ${now.toString()}`,
);

参数

名称类型说明
recipientString以英文逗号分隔的电子邮件地址列表
subjectString电子邮件的主题
bodyString电子邮件正文

返回

GmailDraft - 新创建的 GmailDraft

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


createDraft(recipient, subject, body, options)

创建一封电子邮件草稿,可使用可选实参。电子邮件可以包含纯文本或 HTML 正文。电子邮件的大小(包括标题,但不包括附件)受配额限制

// Create a draft email with a file from Google Drive attached as a PDF.
const file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz');
GmailApp.createDraft(
    'mike@example.com',
    'Attachment example',
    'Please see attached file.',
    {
      attachments: [file.getAs(MimeType.PDF)],
      name: 'Automatic Emailer Script',
    },
);

参数

名称类型说明
recipientString收件人的地址
subjectString主题行
bodyString电子邮件的正文
optionsObject一个 JavaScript 对象,用于指定高级参数,如下所列

高级参数

名称类型说明
attachmentsBlobSource[]要随电子邮件一起发送的文件数组
bccString以英文逗号分隔的密送电子邮件地址列表
ccString以逗号分隔的抄送电子邮件地址列表
fromString电子邮件的发送地址,必须是 getAliases() 返回的值之一
htmlBodyString如果设置了此参数,能够呈现 HTML 的设备将使用此参数,而不是必需的 body 实参;如果您为电子邮件添加了内嵌图片,则可以在 HTML 正文中添加可选的 inlineImages 字段
inlineImagesObject一个 JavaScript 对象,包含从图片键 (String) 到图片数据 (BlobSource) 的映射;这假设使用了 htmlBody 参数,并且该参数包含对这些图片的引用,格式为 <img src="cid:imageKey" />
nameString电子邮件发件人的名称(默认:用户的名称)
replyToString用作默认回复地址的电子邮件地址 (默认值:用户的电子邮件地址)

返回

GmailDraft - 新创建的 GmailDraft

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


createLabel(name)

创建具有指定名称的新用户标签。

// Creates the label @FOO and logs label: FOO
Logger.log(`label: ${GmailApp.createLabel('FOO')}`);

参数

名称类型说明
nameString新标签的名称

返回

GmailLabel - 新创建的标签

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


deleteLabel(label)

删除指定标签。

// Have to get the label by name first
const label = GmailApp.getUserLabelByName('FOO');
GmailApp.deleteLabel(label);

参数

名称类型说明
labelGmailLabel要删除的标签

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


getAliases()

获取在 Gmail 中设置为相应账号的别名的电子邮件的列表。

您可以使用“from”可选实参通过上述任何别名发送消息。

// Log the aliases for this Gmail account and send an email as the first one.
const me = Session.getActiveUser().getEmail();
const aliases = GmailApp.getAliases();
Logger.log(aliases);
if (aliases.length > 0) {
  GmailApp.sendEmail(me, 'From an alias', 'A message from an alias!', {
    from: aliases[0],
  });
} else {
  GmailApp.sendEmail(me, 'No aliases found', 'You have no aliases.');
}

返回

String[] - 此账号的别名数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


getDraft(draftId)

按 ID 检索电子邮件草稿。

与 Gmail 草稿的 getId() 结合使用。

// Get the first draft message in your drafts folder
const draft = GmailApp.getDrafts()[0];
// Get its ID
const draftId = draft.getId();
// Now fetch the same draft using that ID.
const draftById = GmailApp.getDraft(draftId);
// Should always log true as they should be the same message
Logger.log(
    draft.getMessage().getSubject() === draftById.getMessage().getSubject(),
);

参数

名称类型说明
draftIdString要检索的草稿的 ID

返回

GmailDraft - 具有指定 ID 的草稿

抛出

Error - 如果找不到具有指定 ID 的草稿

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getDraftMessages()

检索所有草稿邮件。

// Logs the number of draft messages
const drafts = GmailApp.getDraftMessages();
Logger.log(drafts.length);

返回

GmailMessage[] - Gmail 邮件草稿的数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getDrafts()

获取所有 Gmail 草稿邮件。

const drafts = GmailApp.getDrafts();
for (let i = 0; i < drafts.length; i++) {
  Logger.log(drafts[i].getId());
}

返回

GmailDraft[] - Gmail 邮件草稿的数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getInboxThreads()

检索所有收件箱会话,无论其是否带有标签。

如果所有线程的大小过大,导致系统无法处理,此调用将会失败。 如果线程大小未知且可能非常大,请使用“分页”调用,并在每次调用中指定要检索的线程范围。

// Log the subject lines of your Inbox
const threads = GmailApp.getInboxThreads();
for (let i = 0; i < threads.length; i++) {
  Logger.log(threads[i].getFirstMessageSubject());
}

返回

GmailThread[] - 收件箱中 Gmail 会话串的数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getInboxThreads(start, max)

检索一系列收件箱会话,而不考虑标签。

// Log the subject lines of up to the first 50 emails in your Inbox
const threads = GmailApp.getInboxThreads(0, 50);
for (let i = 0; i < threads.length; i++) {
  Logger.log(threads[i].getFirstMessageSubject());
}

参数

名称类型说明
startInteger要检索的第一个线程的索引
maxInteger要检索的线程数量上限

返回

GmailThread[] - 收件箱中 Gmail 会话串的数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getInboxUnreadCount()

获取收件箱中未读消息串的数量。

Logger.log(`Messages unread in inbox: ${GmailApp.getInboxUnreadCount()}`);

返回

Integer - 收件箱中包含未读消息的会话数

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getMessageById(id)

根据 ID 获取消息。

与 Gmail 消息的 getId() 结合使用。

// Get the first message in the first thread of your inbox
const message = GmailApp.getInboxThreads(0, 1)[0].getMessages()[0];
// Get its ID
const messageId = message.getId();
// Now fetch the same message using that ID.
const messageById = GmailApp.getMessageById(messageId);
// Should always log true as they should be the same message
Logger.log(message.getSubject() === messageById.getSubject());

参数

名称类型说明
idString要检索的消息的 ID

返回

GmailMessage - 具有指定 ID 的消息

抛出

Error - 如果找不到具有指定 ID 的消息

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


getMessagesForThread(thread)

检索指定会话串中的所有邮件。

// Log all the subject lines in the first thread of your inbox
const thread = GmailApp.getInboxThreads(0, 1)[0];
const messages = GmailApp.getMessagesForThread(thread);
for (let i = 0; i < messages.length; i++) {
  Logger.log(`subject: ${messages[i].getSubject()}`);
}

参数

名称类型说明
threadGmailThread要检索的消息会话

返回

GmailMessage[] - 与相应线程对应的消息数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


getMessagesForThreads(threads)

检索指定会话串中的所有邮件。

// Log the subject lines of all messages in the first two threads of your inbox
const thread = GmailApp.getInboxThreads(0, 2);
const messages = GmailApp.getMessagesForThreads(thread);
for (let i = 0; i < messages.length; i++) {
  for (let j = 0; j < messages[i].length; j++) {
    Logger.log(`subject: ${messages[i][j].getSubject()}`);
  }
}

参数

名称类型说明
threadsGmailThread[]要检索的消息的线程

返回

GmailMessage[][] - 消息数组的数组,其中外部数组中的每个项对应于一个会话,内部数组包含相应会话中的消息

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


getPriorityInboxThreads()

检索所有优先收件箱会话,无论其标签为何。

如果所有线程的大小过大,导致系统无法处理,此调用将会失败。 如果线程大小未知且可能非常大,请使用“分页”调用,并在每次调用中指定要检索的线程范围。

Logger.log(
    `# of messages in your Priority Inbox: ${
        GmailApp.getPriorityInboxThreads().length}`,
);

返回

GmailThread[] - 优先收件箱中的 Gmail 会话串数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getPriorityInboxThreads(start, max)

检索一系列优先收件箱会话,而不考虑标签。

// Will log some number 2 or less
Logger.log(
    `# of messages in your Priority Inbox: ${
        GmailApp.getPriorityInboxThreads(0, 2).length}`,
);

参数

名称类型说明
startInteger要检索的第一个线程的索引
maxInteger要检索的线程数量上限

返回

GmailThread[] - 优先收件箱中的 Gmail 会话串数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getPriorityInboxUnreadCount()

获取优先收件箱中未读会话的数量。

Logger.log(
    `Number of unread emails in your Priority Inbox : ${
        GmailApp.getPriorityInboxUnreadCount()}`,
);

返回

Integer -“优先收件箱”中包含未读邮件的对话串数量

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getSpamThreads()

检索所有垃圾内容线程,无论其标签如何。

如果所有线程的大小过大,导致系统无法处理,此调用将会失败。 如果线程大小未知且可能非常大,请使用“分页”调用,并在每次调用中指定要检索的线程范围。

Logger.log(`# of total spam threads: ${GmailApp.getSpamThreads().length}`);

返回

GmailThread[] - 垃圾邮件文件夹中的 Gmail 会话串数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getSpamThreads(start, max)

检索一系列垃圾邮件会话,而不考虑标签。

// Will log a number at most 5
Logger.log(`# of total spam threads: ${GmailApp.getSpamThreads(0, 5).length}`);

参数

名称类型说明
startInteger要检索的第一个线程的索引
maxInteger要检索的线程数量上限

返回

GmailThread[] - 垃圾邮件文件夹中的 Gmail 会话串数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getSpamUnreadCount()

获取未读垃圾邮件会话的数量。

// Unless you actually read stuff in your spam folder, this should be the same
// as the number of messages in your spam folder.
Logger.log(`# unread threads that are spam: ${GmailApp.getSpamUnreadCount()}`);

返回

Integer - 包含未读消息的垃圾邮件对话串数量

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getStarredThreads()

检索所有已加星标的会话,无论其标签如何。

如果所有线程的大小过大,导致系统无法处理,此调用将会失败。 如果线程大小未知且可能非常大,请使用“分页”调用,并在每次调用中指定要检索的线程范围。

// Logs the number of starred threads
Logger.log(`# Starred threads: ${GmailApp.getStarredThreads().length}`);

返回

GmailThread[] - 一个包含已加星标的 Gmail 会话的数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getStarredThreads(start, max)

检索一系列已加星标的对话串,无论其是否带有标签。

// Logs the number of starred threads to a maximum of 5
Logger.log(`# Starred threads: ${GmailApp.getStarredThreads(0, 5).length}`);

参数

名称类型说明
startInteger要检索的第一个线程的索引
maxInteger要检索的线程数量上限

返回

GmailThread[] - 一个包含已加星标的 Gmail 会话的数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getStarredUnreadCount()

获取已加星标的未读对话数量。

Logger.log(`# unread and starred: ${GmailApp.getStarredUnreadCount()}`);

返回

Integer - 已加星标且包含未读消息的会话数

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getThreadById(id)

根据 ID 获取一个帖子。

与 Gmail 线程上的 getId() 结合使用。

// Gets the first inbox thread.
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
// Gets the same thread by ID.
const threadById = GmailApp.getThreadById(firstThread.getId());
// Verifies that they are the same.
console.log(
    firstThread.getFirstMessageSubject() ===
        threadById.getFirstMessageSubject(),
);

参数

名称类型说明
idString要检索的线程的 ID。

返回

GmailThread|null - 具有指定 ID 的线程,如果未找到,则为 null

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


getTrashThreads()

检索所有已放入回收站的会话,无论其标签为何。

如果所有线程的大小过大,导致系统无法处理,此调用将会失败。 如果线程大小未知且可能非常大,请使用“分页”调用,并在每次调用中指定要检索的线程范围。

Logger.log(`# of total trash threads: ${GmailApp.getTrashThreads().length}`);

返回

GmailThread[] - 垃圾箱中的 Gmail 会话串数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getTrashThreads(start, max)

检索一系列回收站中的线程,而不考虑标签。

// Will log a number at most 5
Logger.log(
    `# of total trash threads: ${GmailApp.getTrashThreads(0, 5).length}`,
);

参数

名称类型说明
startInteger要检索的第一个线程的索引
maxInteger要检索的线程数量上限

返回

GmailThread[] - 垃圾箱中的 Gmail 会话串数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getUserLabelByName(name)

根据标签名称检索标签。

const labelObject = GmailApp.getUserLabelByName('myLabel');

参数

名称类型说明
nameString要检索的标签的名称

返回

GmailLabel - 具有指定名称的 Gmail 标签

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

getUserLabels()

检索用户创建的标签的列表。

// Logs all of the names of your labels
const labels = GmailApp.getUserLabels();
for (let i = 0; i < labels.length; i++) {
  Logger.log(`label: ${labels[i].getName()}`);
}

返回

GmailLabel[] - 用户创建的标签数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

markMessageRead(message)

将相应消息标记为已读,并强制刷新消息。

// Mark the first message in the first thread of your inbox as read
const message = GmailApp.getInboxThreads(0, 1)[0].getMessages()[0];
GmailApp.markMessageRead(message);

参数

名称类型说明
messageGmailMessage要标记为已读的邮件

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markMessageUnread(message)

将相应消息标记为未读,并强制刷新该消息。

// Mark the first message in the first thread of your inbox as unread
const message = GmailApp.getInboxThreads(0, 1)[0].getMessages()[0];
GmailApp.markMessageUnread(message);

参数

名称类型说明
messageGmailMessage要标记为未读的消息

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markMessagesRead(messages)

将这些消息标记为已读,并强制刷新消息。

// Mark first three messages in the first inbox thread as read.
// Assumes that the first inbox thread has 3 messages in it.
const threadMessages = GmailApp.getInboxThreads(0, 1)[0].getMessages();
const messages = [threadMessages[0], threadMessages[1], threadMessages[2]];
GmailApp.markMessagesRead(messages);

参数

名称类型说明
messagesGmailMessage[]要标记为已读的消息数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markMessagesUnread(messages)

将这些消息标记为未读,并强制刷新消息。

// Mark first three messages in the first inbox thread as unread.
// Assumes that the first inbox thread has 3 messages in it
const threadMessages = GmailApp.getInboxThreads(0, 1)[0].getMessages();
const messages = [threadMessages[0], threadMessages[1], threadMessages[2]];
GmailApp.markMessagesUnread(messages);

参数

名称类型说明
messagesGmailMessage[]要标记为未读的消息数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markThreadImportant(thread)

将相应消息串标记为重要,并强制刷新该消息串。

// Marks first inbox thread as important
const thread = GmailApp.getInboxThreads(0, 1)[0];
GmailApp.markThreadImportant(thread);

参数

名称类型说明
threadGmailThread要标记为重要的消息串

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markThreadRead(thread)

将相应消息串标记为已读,并强制刷新该消息串。

// Marks first inbox thread as read
const thread = GmailApp.getInboxThreads(0, 1)[0];
GmailApp.markThreadRead(thread);

参数

名称类型说明
threadGmailThread要标记为已读的消息串

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markThreadUnimportant(thread)

将相应消息串标记为不重要,并强制刷新该消息串。

// Marks first inbox thread as unimportant
const thread = GmailApp.getInboxThreads(0, 1)[0];
GmailApp.markThreadUnimportant(thread);

参数

名称类型说明
threadGmailThread要标记为不重要的消息串

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markThreadUnread(thread)

将相应消息串标记为未读,并强制刷新该消息串。

// Marks first inbox thread as unread
const thread = GmailApp.getInboxThreads(0, 1)[0];
GmailApp.markThreadUnread(thread);

参数

名称类型说明
threadGmailThread要标记为未读的消息串

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markThreadsImportant(threads)

将这些线程标记为重要线程,并强制刷新这些线程。

// Marks first two threads in inbox as important
const threads = GmailApp.getInboxThreads(0, 2);
GmailApp.markThreadsImportant(threads);

参数

名称类型说明
threadsGmailThread[]要标记为重要的线程数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markThreadsRead(threads)

将这些消息串标记为已读,并强制刷新消息串。

// Marks first two threads in inbox as read
const threads = GmailApp.getInboxThreads(0, 2);
GmailApp.markThreadsRead(threads);

参数

名称类型说明
threadsGmailThread[]要标记为已读的消息串的数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markThreadsUnimportant(threads)

将这些消息串标记为不重要,并强制刷新消息串。

// Marks first two threads in inbox as unimportant
const threads = GmailApp.getInboxThreads(0, 2);
GmailApp.markThreadsUnimportant(threads);

参数

名称类型说明
threadsGmailThread[]要标记为不重要的线程的数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


markThreadsUnread(threads)

将这些消息串标记为未读,并强制刷新消息串。

// Marks first two threads in inbox as unread
const threads = GmailApp.getInboxThreads(0, 2);
GmailApp.markThreadsUnread(threads);

参数

名称类型说明
threadsGmailThread[]要标记为未读的消息串的数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveMessageToTrash(message)

将消息移至回收站并强制刷新消息。

// Move the first message in your inbox to trash
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
const firstMessage = firstThread.getMessages()[0];
GmailApp.moveMessageToTrash(firstMessage);

参数

名称类型说明
messageGmailMessage要移至回收站的邮件

返回

GmailApp - Gmail 服务(适用于链式调用)

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveMessagesToTrash(messages)

将指定的消息移至回收站,并强制刷新消息。

// Move first two messages in your inbox to trash
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
const messages = firstThread.getMessages();
const toDelete = [messages[0], messages[1]];
GmailApp.moveMessagesToTrash(toDelete);

参数

名称类型说明
messagesGmailMessage[]要移至回收站的邮件

返回

GmailApp - Gmail 服务(适用于链式调用)

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveThreadToArchive(thread)

将相应线程移至归档,并强制刷新该线程。

// Archive the first thread in your inbox
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
GmailApp.moveThreadToArchive(firstThread);

参数

名称类型说明
threadGmailThread要归档的会话串

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveThreadToInbox(thread)

将相应线程移至收件箱,并强制刷新该线程。

// Find a thread not already in your inbox
const thread = GmailApp.search('-in:inbox')[0];  // Get the first one
GmailApp.moveThreadToInbox(thread);

参数

名称类型说明
threadGmailThread要移至收件箱的对话

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveThreadToSpam(thread)

将相应对话串移至“垃圾内容”文件夹,并强制刷新该对话串。

// Tag first thread in inbox as spam
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
GmailApp.moveThreadToSpam(firstThread);

参数

名称类型说明
threadGmailThread要移至“垃圾内容”的对话

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveThreadToTrash(thread)

将相应线程移至回收站,并强制刷新该线程。

// Move first thread in inbox to trash
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
GmailApp.moveThreadToTrash(firstThread);

参数

名称类型说明
threadGmailThread要放入回收站的会话串

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveThreadsToArchive(threads)

将这些线程移至归档文件夹,并强制刷新线程。

// Move first two threads in your inbox to the archive
const firstTwoThreads = GmailApp.getInboxThreads(0, 2);
GmailApp.moveThreadsToArchive(firstTwoThreads);

参数

名称类型说明
threadsGmailThread[]要归档的线程数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveThreadsToInbox(threads)

将这些会话移至收件箱,并强制刷新会话。

// Find two threads not already in your inbox
const firstTwoThreads = GmailApp.search('-in:inbox', 0, 2);
GmailApp.moveThreadsToInbox(firstTwoThreads);

参数

名称类型说明
threadsGmailThread[]要移至收件箱的线程数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveThreadsToSpam(threads)

将这些会话移至“垃圾内容”文件夹,并强制刷新会话。

// Move first two threads in your inbox to spam
const firstTwoThreads = GmailApp.getInboxThreads(0, 2);
GmailApp.moveThreadsToSpam(firstTwoThreads);

参数

名称类型说明
threadsGmailThread[]要移至“垃圾内容”的线程数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


moveThreadsToTrash(threads)

将这些线程移至回收站,并强制刷新线程。

// Move first two threads in your inbox to trash
const firstTwoThreads = GmailApp.getInboxThreads(0, 2);
GmailApp.moveThreadsToTrash(firstTwoThreads);

参数

名称类型说明
threadsGmailThread[]要放入回收站的线程数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


refreshMessage(message)

从 Gmail 重新加载消息和关联状态(如果标签、已读状态等发生变化,此方法非常有用)。

const firstThread = GmailApp.getInboxThreads(0, 1)[0];
const firstMessage = firstThread.getMessages()[0];
// ...Do something that may take a while here....
GmailApp.refreshMessage(firstMessage);
// ...Do more stuff with firstMessage...

参数

名称类型说明
messageGmailMessage要刷新的消息

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


refreshMessages(messages)

从 Gmail 重新加载消息和关联状态(如果标签、已读状态等发生变化,此方法非常有用)。

const firstThread = GmailApp.getInboxThreads(0, 1)[0];
const coupleOfMessages = firstThread.getMessages().slice(0, 2);
// ...Do something that may take a while here....
GmailApp.refreshMessages(coupleOfMessages);
// ...Do more stuff with coupleOfMessages...

参数

名称类型说明
messagesGmailMessage[]要刷新的消息

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


refreshThread(thread)

从 Gmail 重新加载会话和关联状态(如果标签、已读状态等发生变化,此方法非常有用)。

const firstThread = GmailApp.getInboxThreads(0, 1)[0];
// ...Do something that may take a while here....
GmailApp.refreshThread(firstThread);
// ... Do more stuff with the thread ...

参数

名称类型说明
threadGmailThread要刷新的线程

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


refreshThreads(threads)

从 Gmail 重新加载线程和关联状态(如果标签、已读状态等发生更改,此方法非常有用)。

const threads = GmailApp.getInboxThreads(0, 3);
// ...Do something that may take a while here....
GmailApp.refreshThreads(threads);
// ... Do more stuff with threads ...

参数

名称类型说明
threadsGmailThread[]要刷新的消息串

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


search(query)

使用指定查询内容搜索 Gmail。

如果所有线程的大小过大,导致系统无法处理,此调用将会失败。 如果线程大小未知且可能非常大,请使用“分页”调用,并在每次调用中指定要检索的线程范围。

// Find starred messages with subject IMPORTANT
const threads = GmailApp.search('is:starred subject:"IMPORTANT"');

参数

名称类型说明
queryString搜索查询,就像您在 Gmail 中输入的那样

返回

GmailThread[] - 与相应查询匹配的 Gmail 会话串数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

search(query, start, max)

使用指定查询内容搜索 Gmail。

// Find starred messages with subject IMPORTANT and return second batch of 10.
// Assumes there are at least 11 of them, otherwise this will return an empty
// array.
const threads = GmailApp.search('is:starred subject:"IMPORTANT"', 10, 10);

参数

名称类型说明
queryString搜索查询,就像您在 Gmail 中输入的那样
startInteger起始线程的索引
maxInteger要返回的最大线程数

返回

GmailThread[] - 与相应查询匹配的 Gmail 会话串数组

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

sendEmail(recipient, subject, body)

发送邮件。电子邮件的大小(包括标题)受配额限制

// The code below will send an email with the current date and time.
const now = new Date();
GmailApp.sendEmail(
    'mike@example.com',
    'current time',
    `The time is: ${now.toString()}`,
);

参数

名称类型说明
recipientString以英文逗号分隔的电子邮件地址列表
subjectString电子邮件的主题(最多 250 个字符)
bodyString电子邮件正文

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


sendEmail(recipient, subject, body, options)

发送包含可选实参的电子邮件。电子邮件可以包含纯文本或 HTML 正文。电子邮件的大小(包括标题,但不包括附件)受配额限制

// Send an email with a file from Google Drive attached as a PDF.
const file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz');
GmailApp.sendEmail(
    'mike@example.com',
    'Attachment example',
    'Please see the attached file.',
    {
      attachments: [file.getAs(MimeType.PDF)],
      name: 'Automatic Emailer Script',
    },
);

参数

名称类型说明
recipientString收件人的地址
subjectString主题行(最多 250 个字符)
bodyString电子邮件的正文
optionsObject一个 JavaScript 对象,用于指定高级参数,如下所列

高级参数

名称类型说明
attachmentsBlobSource[]要随电子邮件一起发送的文件数组
bccString以英文逗号分隔的密送电子邮件地址列表
ccString以逗号分隔的抄送电子邮件地址列表
fromString电子邮件的发送地址,必须是 getAliases() 返回的值之一
htmlBodyString如果设置了此参数,能够呈现 HTML 的设备将使用此参数,而不是必需的 body 实参;如果电子邮件包含内嵌图片,您可以在 HTML 正文中添加可选的 inlineImages 字段
inlineImagesObject一个 JavaScript 对象,包含从图片键 (String) 到图片数据 (BlobSource) 的映射;这假设使用了 htmlBody 参数,并且该参数包含对这些图片的引用,格式为 <img src="cid:imageKey" />
nameString电子邮件发件人的名称(默认:用户的名称)
noReplyBooleantrue 如果电子邮件应从通用的 no-reply 电子邮件地址发送,以阻止收件人回复电子邮件;此选项仅适用于 Google Workspace 账号,不适用于 Gmail 用户
replyToString用作默认回复地址的电子邮件地址 (默认值:用户的电子邮件地址)

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


setCurrentMessageAccessToken(accessToken)

设置当前消息访问令牌,使脚本能够访问当前的 GmailMessage 属性。

只有使用 Gmail 当前消息范围Google Workspace 加载项项目才需要使用此方法。

function handleAddonActionEvent(e) {
  GmailApp.setCurrentMessageAccessToken(e.messageMetadata.accessToken);
  const mailMessage = GmailApp.getMessageById(e.messageMetadata.messageId);
  // Do something with mailMessage
}

参数

名称类型说明
accessTokenString从 Gmail 插件操作事件对象获取的临时访问令牌。

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

starMessage(message)

为相应消息添加星标,并强制刷新该消息。

// Stars the first message in the first thread in your inbox
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
const message = firstThread.getMessages()[0];
GmailApp.starMessage(message);

参数

名称类型说明
messageGmailMessage要加星标的邮件

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


starMessages(messages)

为这些消息添加星标,并强制刷新消息。

// Stars the first three messages in the first thread in your inbox
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
const coupleOfMessages = firstThread.getMessages().slice(0, 3);
GmailApp.starMessages(coupleOfMessages);

参数

名称类型说明
messagesGmailMessage[]要加星标的消息的数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


unstarMessage(message)

从相应消息中移除星标,并强制刷新该消息。

// Unstars the first message in the first thread in your inbox
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
const message = firstThread.getMessages()[0];
GmailApp.unstarMessage(message);

参数

名称类型说明
messageGmailMessage要移除星标的消息

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅


unstarMessages(messages)

移除这些消息中的星标,并强制刷新消息。

// Unstars the first three messages in the first thread in your inbox
const firstThread = GmailApp.getInboxThreads(0, 1)[0];
const coupleOfMessages = firstThread.getMessages().slice(0, 3);
GmailApp.unstarMessages(coupleOfMessages);

参数

名称类型说明
messagesGmailMessage[]要移除星标的消息的数组

返回

GmailApp - Gmail 服务,适用于链接

授权

使用此方法的脚本需要获得以下一个或多个范围相关 REST API 中的相应范围的授权:

  • https://mail.google.com/

另请参阅

已弃用的方法