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按 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 - 具有给定 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(如果应使用通用的无回复电子邮件地址发送电子邮件,以阻止收件人回复电子邮件;此选项仅适用于 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 插件 action 事件对象获取的临时访问令牌。

授权

使用此方法的脚本需要具有以下一个或多个作用域相关 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/

另请参阅

已弃用的方法