用户 Gmail 账号中的会话。
方法
| 方法 | 返回类型 | 简介 |
|---|---|---|
add | Gmail | 将此标签添加到线程。 |
create | Gmail | 创建一封草稿邮件,使用回复地址回复相应会话串中上一条消息的发送者。 |
create | Gmail | 使用回复地址创建一封草稿消息,以回复相应线程中最后一条消息的发送者,并带有可选实参。 |
create | Gmail | 创建一封草稿邮件,回复相应线程中上一封邮件的发件人,并使用该邮件的“回复”地址和所有收件人。 |
create | Gmail | 使用回复地址和所有收件人创建一封草稿邮件,回复相应线程中最后一条消息的发送者,并可使用可选实参。 |
get | String | 获取消息串中第一条消息的主题。 |
get | String | 获取相应线程的 ID。 |
get | Gmail | 返回相应线程上用户创建的标签。 |
get | Date | 获取相应线程中最新消息的日期。 |
get | Integer | 返回相应线程中的消息数量。 |
get | Gmail | 获取相应消息串中的消息。 |
get | String | 获取相应消息串的永久链接。 |
has | Boolean | 返回相应线程是否包含任何已加星标的消息。 |
is | Boolean | 返回相应线程是否标记为重要。 |
is | Boolean | 返回相应线程是否标记为对话。 |
is | Boolean | 返回相应线程是否位于收件箱中。 |
is | Boolean | 如果相应线程位于优先收件箱中,则返回 true;否则返回 false。 |
is | Boolean | 返回相应会话串是否被标记为垃圾内容。 |
is | Boolean | 返回相应线程是否位于回收站中。 |
is | Boolean | 返回相应线程是否包含未读消息。 |
mark | Gmail | 将相应消息串标记为重要。 |
mark | Gmail | 将此消息串标记为已读。 |
mark | Gmail | 将相应消息串标记为不重要。 |
mark | Gmail | 将相应消息串标记为未读。 |
move | Gmail | 将相应对话串移至归档。 |
move | Gmail | 将相应对话串移至收件箱。 |
move | Gmail | 将相应对话移至“垃圾信息”文件夹。 |
move | Gmail | 将相应对话串移至回收站。 |
refresh() | Gmail | 从 Gmail 重新加载此会话和关联状态(如果标签、已读状态等发生变化,此方法非常有用)。 |
remove | Gmail | 从相应消息串中移除此标签。 |
reply(body) | Gmail | 使用 replyTo 地址回复相应线程中最后一封邮件的发件人。 |
reply(body, options) | Gmail | 使用 replyTo 地址回复相应线程中最后一条消息的发件人,并可提供可选实参。 |
reply | Gmail | 回复发件人(使用 replyTo 地址)以及此会话串中上一封邮件的所有收件人。 |
reply | Gmail | 使用 reply 地址回复此讨论串中上一条消息的发送者和所有接收者,并可选择性地提供实参。 |
详细文档
addLabel(label)
将此标签添加到线程。
// Add label MyLabel to the first thread in the inbox const label = GmailApp.getUserLabelByName('MyLabel'); const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.addLabel(label);
参数
| 名称 | 类型 | 说明 |
|---|---|---|
label | Gmail | 要应用于相应对话串的标签 |
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
createDraftReply(body)
创建一封草稿邮件,使用“回复”地址回复相应线程中上一封邮件的发送者。电子邮件的大小(包括标题)受配额限制。
// Create a draft reply to the message author with an acknowledgement. const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.createDraftReply('Got your message');
参数
| 名称 | 类型 | 说明 |
|---|---|---|
body | String | 电子邮件的正文 |
返回
GmailDraft - 新创建的草稿消息
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
createDraftReply(body, options)
使用回复地址创建一封草稿消息,以回复相应线程中最后一条消息的发送者,并带有可选实参。
电子邮件可以同时包含纯文本和 HTML 正文。电子邮件的大小(包括标题)受配额限制。
// Create a draft response with an HTML text body. const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.createDraftReply('incapable of HTML', { htmlBody: '<b>some HTML body text</b>', cc: 'another@example.com', });
参数
| 名称 | 类型 | 说明 |
|---|---|---|
body | String | 电子邮件的正文 |
options | Object | 一个 JavaScript 对象,用于指定高级参数,如下所列 |
高级参数
| 名称 | 类型 | 说明 |
|---|---|---|
attachments | Blob | 要随电子邮件一起发送的文件数组 |
bcc | String | 以逗号分隔的密送电子邮件地址列表 |
cc | String | 以逗号分隔的抄送电子邮件地址列表 |
from | String | 电子邮件的发送地址,必须是 Gmail 返回的值之一 |
html | String | 如果设置了此参数,能够呈现 HTML 的设备将使用此参数,而不是必需的 body 实参;如果电子邮件包含内嵌图片,您可以在 HTML 正文中添加可选的 inline 字段 |
inline | Object | 一个 JavaScript 对象,包含从图片键 (String) 到图片数据 (Blob) 的映射;这假设使用了 html 参数,并且该参数包含对这些图片的引用,格式为 <img src="cid:imageKey" /> |
name | String | 电子邮件发件人的名称(默认:用户的名称) |
reply | String | 用作默认回复地址的电子邮件地址 (默认值:用户的电子邮件地址) |
subject | String | 电子邮件的新主题行(最多 250 个字符) |
返回
GmailDraft - 新创建的草稿消息
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
createDraftReplyAll(body)
创建一封草稿邮件,回复相应会话串中上一封邮件的发件人,并使用该邮件的回复地址和所有收件人。电子邮件的大小(包括标题)超出配额限制。
// Create a draft reply to all recipients (except those bcc'd) of the last email // in this thread. const firstThread = GmailApp.getInboxThreads(0, 1)[0]; const message = firstThread.getMessages()[0]; message.createDraftReplyAll('Got your message');
参数
| 名称 | 类型 | 说明 |
|---|---|---|
body | String | 电子邮件的正文 |
返回
GmailDraft - 新创建的草稿消息
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
createDraftReplyAll(body, options)
使用回复地址和所有收件人创建回复此线程中最后一条消息的发送者的草稿消息,并带有可选实参。
电子邮件可以同时包含纯文本和 HTML 正文。电子邮件的大小(包括标题)受配额限制。
// Create a draft reply, using an HTML text body, to all recipients (except // those bcc'd) of the last email of in this thread. const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.createDraftReplyAll('incapable of HTML', { htmlBody: '<b>some HTML body text</b>', cc: 'another@example.com', });
参数
| 名称 | 类型 | 说明 |
|---|---|---|
body | String | 电子邮件的正文 |
options | Object | 一个 JavaScript 对象,用于指定高级参数,如下所列 |
高级参数
| 名称 | 类型 | 说明 |
|---|---|---|
attachments | Blob | 要随电子邮件一起发送的文件数组 |
bcc | String | 以逗号分隔的密送电子邮件地址列表 |
cc | String | 以逗号分隔的抄送电子邮件地址列表 |
from | String | 电子邮件的发送地址,必须是 Gmail 返回的值之一 |
html | String | 如果设置了此参数,能够呈现 HTML 的设备将使用此参数,而不是必需的 body 实参;如果电子邮件包含内嵌图片,您可以在 HTML 正文中添加可选的 inline 字段 |
inline | Object | 一个 JavaScript 对象,包含从图片键 (String) 到图片数据 (Blob) 的映射;这假设使用了 html 参数,并且该参数包含对这些图片的引用,格式为 <img src="cid:imageKey" /> |
name | String | 电子邮件发件人的名称(默认:用户的名称) |
reply | String | 用作默认回复地址的电子邮件地址 (默认值:用户的电子邮件地址) |
subject | String | 电子邮件的新主题行。长度上限为 250 个字符。 |
返回
GmailDraft - 新创建的草稿消息
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
getFirstMessageSubject()
获取消息串中第一条消息的主题。
// Log the subject of the first message in the first thread in the inbox const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(firstThread.getFirstMessageSubject());
返回
String - 消息串中第一条消息的主题
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
getId()
获取相应线程的 ID。线程的 ID 会因其中包含的消息而异;如需获取线程中特定消息的一致 ID,请改为调用 getMessages()[0].getId()。
// Log the subject of the first message in the first thread in the inbox. const firstThread = GmailApp.getInboxThreads(0, 1)[0]; const id = firstThread.getId(); // Get same thread by its ID. const thread = GmailApp.getThreadById(id); Logger.log( thread.getFirstMessageSubject() === firstThread.getFirstMessageSubject(), ); // True
返回
String - 相应线程的 ID
getLabels()
返回相应线程上用户创建的标签。
// Log the names of the labels attached to the first thread in the inbox const firstThread = GmailApp.getInboxThreads(0, 1)[0]; const labels = firstThread.getLabels(); for (let i = 0; i < labels.length; i++) { Logger.log(labels[i].getName()); }
返回
GmailLabel[] - 相应消息串的标签数组
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
getLastMessageDate()
获取相应线程中最新消息的日期。
// Log the date of the most recent message on the first thread in the inbox const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(firstThread.getLastMessageDate());
返回
Date - 会话中最新消息的日期
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
getMessageCount()
返回相应线程中的消息数量。
// Log the number of messages in the thread const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(firstThread.getMessageCount());
返回
Integer - 会话中的消息数量
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
getMessages()
获取相应消息串中的消息。
// Log the subjects of the messages in the thread const firstThread = GmailApp.getInboxThreads(0, 1)[0]; const messages = firstThread.getMessages(); for (let i = 0; i < messages.length; i++) { Logger.log(messages[i].getSubject()); }
返回
GmailMessage[] - 相应消息串中的 Gmail 消息数组
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
getPermalink()
获取相应消息串的永久链接。
请注意,此功能仅适用于传统版 Gmail 界面,不适用于 Inbox。
// Logs the permalink for the first thread in the inbox const thread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(thread.getPermalink());
返回
String - 此消息串的永久链接
hasStarredMessages()
返回相应线程是否包含任何已加星标的消息。
// Log if this thread has starred messages const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(`has starred : ${firstThread.hasStarredMessages()}`);
返回
Boolean - 如果相应对话串包含任何已加星标的消息,则为 true
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
isImportant()
返回相应线程是否标记为重要。
// Log if this thread is marked as important const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(`Important? : ${firstThread.isImportant()}`);
返回
Boolean - 相应会话是否标记为重要。
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
isInChats()
返回相应线程是否被标记为对话。
// Log if this thread is a chat const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(`is in chats? : ${firstThread.isInChats()}`);
返回
Boolean - 如果线程被标记为对话,则为 true
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
isInInbox()
返回相应线程是否位于收件箱中。
// Log if this thread is in the inbox const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(`is in the inbox? : ${firstThread.isInInbox()}`);
返回
Boolean - 如果相应线程位于收件箱中,则为 true
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
isInPriorityInbox()
如果相应线程位于优先收件箱中,则返回 true;否则返回 false。
// Log if this thread is in the priority inbox const firstThread = GmailApp.getPriorityInboxThreads(0, 1)[0]; Logger.log(`is in priority inbox? ${firstThread.isInPriorityInbox()}`);
返回
Boolean - 如果相应会话位于优先收件箱中,则为 true
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
isInSpam()
返回相应会话串是否被标记为垃圾内容。
// Log if this thread is in the spam folder const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(`Spam? ${firstThread.isInSpam()}`);
返回
Boolean - 相应会话串是否被标记为垃圾内容。
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
isInTrash()
返回相应线程是否位于回收站中。
// Log if this thread is in the trash const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(`Trashed? ${firstThread.isInTrash()}`);
返回
Boolean - 如果相应线程位于回收站中,则为 true
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
isUnread()
返回相应线程是否有未读消息。
// Log if this thread is unread const firstThread = GmailApp.getInboxThreads(0, 1)[0]; Logger.log(`Unread? ${firstThread.isUnread()}`);
返回
Boolean - 如果有未读消息,则为 true
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
markImportant()
将相应消息串标记为重要。
// Mark first inbox thread as important const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.markImportant();
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
markRead()
将相应消息串标记为已读。
// Mark first inbox thread as read const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.markRead();
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
markUnimportant()
将相应消息串标记为不重要。
// Mark first inbox thread as unimportant const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.markUnimportant();
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
markUnread()
将相应消息串标记为未读。
// Mark first inbox thread as unread const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.markUnread();
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
moveToArchive()
将相应对话串移至归档。
// Archive first inbox thread const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.moveToArchive();
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
moveToInbox()
将相应对话串移至收件箱。
// Move first non-inbox thread to inbox const firstThread = GmailApp.search('-in:inbox')[0]; firstThread.moveToInbox();
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
moveToSpam()
将相应线程移至“垃圾信息”。
// Move first inbox thread to spam const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.moveToSpam();
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
moveToTrash()
将相应对话移至回收站。
// Move first inbox thread to trash const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.moveToTrash();
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
refresh()
从 Gmail 重新加载此会话和关联状态(如果标签、已读状态等发生变化,此方法非常有用)。
const firstThread = GmailApp.getInboxThreads(0, 1)[0]; // ...Do something that may take a while here.... firstThread.refresh(); // Make sure it's up-to-date // ...Do more stuff with firstThread ...
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
removeLabel(label)
从相应线程中移除此标签。
const myLabel = GmailApp.getUserLabelByName('<your label>'); const threads = myLabel.getThreads(); for (const thread of threads) { thread.removeLabel(myLabel); }
参数
| 名称 | 类型 | 说明 |
|---|---|---|
label | Gmail | 要从此消息串中移除的标签 |
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
reply(body)
使用 replyTo 地址回复相应线程中最后一封邮件的发件人。
请注意,电子邮件的总大小(包括所有标题)不得超过 20 KB。
// Respond to author of last email in thread with acknowledgment const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.reply('Got your message');
参数
| 名称 | 类型 | 说明 |
|---|---|---|
body | String | 电子邮件的正文 |
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
reply(body, options)
使用 replyTo 地址回复相应线程中最后一条消息的发件人,并可提供可选实参。电子邮件可以包含纯文本和 HTML 正文。请注意,电子邮件的总大小(包括所有标题,但不包括附件)不得超过 20KB。
// Respond with HTML body text. const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.reply('incapable of HTML', { htmlBody: 'some HTML body text', noReply: true, });
参数
| 名称 | 类型 | 说明 |
|---|---|---|
body | String | 电子邮件的正文 |
options | Object | 一个 JavaScript 对象,用于指定高级参数,如下所列 |
高级参数
| 名称 | 类型 | 说明 |
|---|---|---|
cc | String | 以英文逗号分隔的抄送电子邮件地址列表 |
bcc | String | 以英文逗号分隔的密送电子邮件地址列表 |
html | String | 如果设置了此参数,能够呈现 HTML 的设备将使用此参数,而不是必需的 body 实参;如果电子邮件包含内嵌图片,您可以在 HTML 正文中添加可选的 inline 字段 |
name | String | 电子邮件发件人的名称(默认:用户的名称) |
from | String | 电子邮件的发送地址,必须是 Gmail 返回的值之一 |
reply | String | 用作默认回复地址的电子邮件地址 (默认值:用户的电子邮件地址) |
no | Boolean | true 如果电子邮件应从通用的“请勿回复”电子邮件地址发送,以阻止收件人回复电子邮件;此选项仅适用于 Google Workspace 账号,不适用于 Gmail 用户 |
attachments | Blob | 要随电子邮件一起发送的文件数组 |
inline | Object | 一个 JavaScript 对象,包含从图片键 (String) 到图片数据 (Blob) 的映射;这假设使用了 html 参数,并且该参数包含对这些图片的引用,格式为 <img src="cid:imageKey" /> |
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
replyAll(body)
回复发件人(使用 replyTo 地址)以及相应线程中上一条消息的所有收件人。
请注意,电子邮件的总大小(包括所有标题)不得超过 20 KB。
// Respond to all with acknowledgment to the first thread in the inbox const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.replyAll('Got your message');
参数
| 名称 | 类型 | 说明 |
|---|---|---|
body | String | 电子邮件的正文 |
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/
另请参阅
replyAll(body, options)
使用 replyTo 地址回复发件人以及此线程中上一条消息的所有收件人,并可选择性地提供实参。电子邮件可以同时包含纯文本和 HTML 正文。请注意,电子邮件的总大小(包括所有标题,但不包括附件)不得超过 20KB。
// Respond with HTML body text. const firstThread = GmailApp.getInboxThreads(0, 1)[0]; firstThread.replyAll('incapable of HTML', { htmlBody: 'some HTML body text', noReply: true, });
参数
| 名称 | 类型 | 说明 |
|---|---|---|
body | String | 电子邮件的正文 |
options | Object | 一个 JavaScript 对象,用于指定高级参数,如下所列 |
高级参数
| 名称 | 类型 | 说明 |
|---|---|---|
cc | String | 以英文逗号分隔的抄送电子邮件地址列表 |
bcc | String | 以英文逗号分隔的密送电子邮件地址列表 |
html | String | 如果设置了此参数,能够呈现 HTML 的设备将使用此参数,而不是必需的 body 实参;如果电子邮件包含内嵌图片,您可以在 HTML 正文中添加可选的 inline 字段 |
name | String | 电子邮件发件人的名称(默认:用户的名称) |
from | String | 电子邮件的发送地址,必须是 Gmail 返回的值之一 |
reply | String | 用作默认回复地址的电子邮件地址 (默认值:用户的电子邮件地址) |
no | Boolean | true 如果电子邮件应从通用的“请勿回复”电子邮件地址发送,以阻止收件人回复电子邮件;此选项仅适用于 G Suite 账号,不适用于 Gmail 用户 |
attachments | Blob | 要随电子邮件一起发送的文件数组 |
inline | Object | 一个 JavaScript 对象,包含从图片键 (String) 到图片数据 (Blob) 的映射;这假设使用了 html 参数,并且该参数包含对这些图片的引用,格式为 <img src="cid:imageKey" /> |
返回
GmailThread - 此线程,适用于链式调用
授权
使用此方法的脚本需要通过以下一个或多个范围或相关 REST API 中的相应范围进行授权:
-
https://mail.google.com/