Class GmailThread

  • A GmailThread object represents a conversation thread in a user's Gmail account and provides various methods to interact with the thread.

  • You can add or remove labels from a thread using the addLabel() and removeLabel() methods.

  • Methods like createDraftReply(), createDraftReplyAll(), reply(), and replyAll() allow for creating draft replies or sending replies directly to the thread participants.

  • Information about the thread such as its ID, the subject of the first message, the date of the last message, the number of messages, and the messages themselves can be retrieved using methods like getId(), getFirstMessageSubject(), getLastMessageDate(), getMessageCount(), and getMessages().

  • You can check the status of a thread (starred, important, in chats, in inbox, in priority inbox, in spam, in trash, or unread) using methods like hasStarredMessages(), isImportant(), isInChats(), isInInbox(), isInPriorityInbox(), isInSpam(), isInTrash(), and isUnread().

GmailThread

A thread in a user's Gmail account.

Methods

MethodReturn typeBrief description
addLabel(label) GmailThread Adds this label to the thread.
createDraftReply(body) GmailDraft Creates a draft message replying to the sender of the last message in this thread using the reply-to address.
createDraftReply(body, options) GmailDraft Creates a draft message replying to the sender of the last message in this thread using the reply-to address, with optional arguments.
createDraftReplyAll(body) GmailDraft Creates a draft message replying to the sender of the last message in this thread, using the reply-to address and all recipients of this message.
createDraftReplyAll(body, options) GmailDraft Creates a draft message replying to the sender of the last message in this thread, using the reply-to address and all recipients, with optional arguments.
getFirstMessageSubject() StringGets the subject of the first message in the thread.
getId() StringGets the ID of this thread.
getLabels() GmailLabel[] Returns the user-created labels on this thread.
getLastMessageDate() DateGets the date of this thread's most recent message.
getMessageCount() IntegerReturns the number of messages in the thread.
getMessages() GmailMessage[] Gets the messages in this thread.
getPermalink() StringGets a permalink for this thread.
hasStarredMessages() BooleanReturns whether the thread has any starred messages.
isImportant() BooleanReturns whether the thread is marked as important.
isInChats() BooleanReturns whether the thread is labeled a chat.
isInInbox() BooleanReturns whether the thread is in the inbox.
isInPriorityInbox() BooleanReturns true if this thread is in the priority inbox; returns false otherwise.
isInSpam() BooleanReturns whether the thread is marked as spam.
isInTrash() BooleanReturns whether the thread is in the trash.
isUnread() BooleanReturns whether the thread has any unread messages.
markImportant() GmailThread Marks this thread as important.
markRead() GmailThread Marks this thread as read.
markUnimportant() GmailThread Marks this thread as unimportant.
markUnread() GmailThread Marks this thread as unread.
moveToArchive() GmailThread Moves this thread to the archive.
moveToInbox() GmailThread Moves this thread to the inbox.
moveToSpam() GmailThread Moves this thread to spam.
moveToTrash() GmailThread Moves this thread to the trash.
refresh() GmailThread Reloads this thread, and associated state from Gmail (useful in case the labels, read state, etc., have changed).
removeLabel(label) GmailThread Removes this label from the thread.
reply(body) GmailThread Reply to the sender of the last message on this thread using the replyTo address.
reply(body, options) GmailThread Reply to the sender of the last message on this thread using the replyTo address, with optional arguments.
replyAll(body) GmailThread Reply to the sender (using the replyTo address), and all recipients of the last message on this thread.
replyAll(body, options) GmailThread Reply to the sender (using the replyTo address), and all recipients of the last message on this thread, with optional arguments.

Detailed documentation

addLabel(label)

Adds this label to the thread.

// Add label MyLabel to the first thread in the inbox
constlabel=GmailApp.getUserLabelByName('MyLabel');
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.addLabel(label);

Parameters

NameTypeDescription
labelGmailLabel the label to apply to this thread

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


createDraftReply(body)

Creates a draft message replying to the sender of the last message in this thread using the reply-to address. The size of the email (including headers) is quota limited.

// Create a draft reply to the message author with an acknowledgement.
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.createDraftReply('Got your message');

Parameters

NameTypeDescription
bodyStringthe body of the email

Return

GmailDraft — the newly created draft message

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


createDraftReply(body, options)

Creates a draft message replying to the sender of the last message in this thread using the reply-to address, with optional arguments.

The email can contain both plain text and an HTML body. The size of the email (including headers) is quota limited.

// Create a draft response with an HTML text body.
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.createDraftReply('incapable of HTML',{
htmlBody:'<b>some HTML body text</b>',
cc:'another@example.com',
});

Parameters

NameTypeDescription
bodyStringthe body of the email
optionsObjecta JavaScript object that specifies advanced parameters, as listed below

Advanced parameters

NameTypeDescription
attachmentsBlobSource[] an array of files to send with the email
bccStringa comma-separated list of email addresses to BCC
ccStringa comma-separated list of email addresses to CC
fromStringthe address that the email should be sent from, which must be one of the values returned by GmailApp.getAliases()
htmlBodyStringif 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
inlineImagesObjecta 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" />
nameStringthe name of the sender of the email (default: the user's name)
replyToStringan email address to use as the default reply-to address (default: the user's email address)
subjectStringa new subject line for the email (250 characters maximum)

Return

GmailDraft — the newly created draft message

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


createDraftReplyAll(body)

Creates a draft message replying to the sender of the last message in this thread, using the reply-to address and all recipients of this message. The size of the email (including headers) is quota limited.

// Create a draft reply to all recipients (except those bcc'd) of the last email
// in this thread.
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
constmessage=firstThread.getMessages()[0];
message.createDraftReplyAll('Got your message');

Parameters

NameTypeDescription
bodyStringthe body of the email

Return

GmailDraft — the newly created draft message

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


createDraftReplyAll(body, options)

Creates a draft message replying to the sender of the last message in this thread, using the reply-to address and all recipients, with optional arguments.

The email can contain both plain text and an HTML body. The size of the email (including headers) is quota limited.

// Create a draft reply, using an HTML text body, to all recipients (except
// those bcc'd) of the last email of in this thread.
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.createDraftReplyAll('incapable of HTML',{
htmlBody:'<b>some HTML body text</b>',
cc:'another@example.com',
});

Parameters

NameTypeDescription
bodyStringthe body of the email
optionsObjecta JavaScript object that specifies advanced parameters, as listed below

Advanced parameters

NameTypeDescription
attachmentsBlobSource[] an array of files to send with the email
bccStringa comma-separated list of email addresses to BCC
ccStringa comma-separated list of email addresses to CC
fromStringthe address that the email should be sent from, which must be one of the values returned by GmailApp.getAliases()
htmlBodyStringif 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
inlineImagesObjecta 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" />
nameStringthe name of the sender of the email (default: the user's name)
replyToStringan email address to use as the default reply-to address (default: the user's email address)
subjectStringa new subject line for the email. Max size is 250 chars.

Return

GmailDraft — the newly created draft message

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


getFirstMessageSubject()

Gets the subject of the first message in the thread.

// Log the subject of the first message in the first thread in the inbox
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(firstThread.getFirstMessageSubject());

Return

String — the subject of the first message in the thread

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


getId()

Gets the ID of this thread. The ID of a thread varies based on the messages it contains; for a consistent ID for a particular message in the thread, call getMessages()[0].getId() instead.

// Log the subject of the first message in the first thread in the inbox.
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
constid=firstThread.getId();
// Get same thread by its ID.
constthread=GmailApp.getThreadById(id);
Logger.log(
thread.getFirstMessageSubject()===firstThread.getFirstMessageSubject(),
);// True

Return

String — the ID of this thread


getLabels()

Returns the user-created labels on this thread.

// Log the names of the labels attached to the first thread in the inbox
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
constlabels=firstThread.getLabels();
for(leti=0;i < labels.length;i++){
Logger.log(labels[i].getName());
}

Return

GmailLabel[] — an array of labels for this thread

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

getLastMessageDate()

Gets the date of this thread's most recent message.

// Log the date of the most recent message on the first thread in the inbox
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(firstThread.getLastMessageDate());

Return

Date — the date of the most recent message in the thread

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


getMessageCount()

Returns the number of messages in the thread.

// Log the number of messages in the thread
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(firstThread.getMessageCount());

Return

Integer — the number of messages in the thread

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


getMessages()

Gets the messages in this thread.

// Log the subjects of the messages in the thread
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
constmessages=firstThread.getMessages();
for(leti=0;i < messages.length;i++){
Logger.log(messages[i].getSubject());
}

Return

GmailMessage[] — an array of Gmail messages in this thread

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


Gets a permalink for this thread.

Note that this only works with the classic Gmail interface, not Inbox.

// Logs the permalink for the first thread in the inbox
constthread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(thread.getPermalink());

Return

String — the permalink for this thread


hasStarredMessages()

Returns whether the thread has any starred messages.

// Log if this thread has starred messages
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(`has starred : ${firstThread.hasStarredMessages()}`);

Return

Boolean — true if the thread has any starred messages

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

isImportant()

Returns whether the thread is marked as important.

// Log if this thread is marked as important
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(`Important? : ${firstThread.isImportant()}`);

Return

Boolean — Whether the thread is marked as important.

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

isInChats()

Returns whether the thread is labeled a chat.

// Log if this thread is a chat
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(`is in chats? : ${firstThread.isInChats()}`);

Return

Boolean — true if the thread is labeled a chat

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

isInInbox()

Returns whether the thread is in the inbox.

// Log if this thread is in the inbox
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(`is in the inbox? : ${firstThread.isInInbox()}`);

Return

Boolean — true if the thread is in the inbox

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

isInPriorityInbox()

Returns true if this thread is in the priority inbox; returns false otherwise.

// Log if this thread is in the priority inbox
constfirstThread=GmailApp.getPriorityInboxThreads(0,1)[0];
Logger.log(`is in priority inbox? ${firstThread.isInPriorityInbox()}`);

Return

Boolean — true if the thread is in the priority inbox

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

isInSpam()

Returns whether the thread is marked as spam.

// Log if this thread is in the spam folder
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(`Spam? ${firstThread.isInSpam()}`);

Return

Boolean — Whether this thread is marked as spam.

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

isInTrash()

Returns whether the thread is in the trash.

// Log if this thread is in the trash
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(`Trashed? ${firstThread.isInTrash()}`);

Return

Boolean — true if the thread is in the trash

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

isUnread()

Returns whether the thread has any unread messages.

// Log if this thread is unread
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
Logger.log(`Unread? ${firstThread.isUnread()}`);

Return

Boolean — true if there are unread messages

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

markImportant()

Marks this thread as important.

// Mark first inbox thread as important
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.markImportant();

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


markRead()

Marks this thread as read.

// Mark first inbox thread as read
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.markRead();

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


markUnimportant()

Marks this thread as unimportant.

// Mark first inbox thread as unimportant
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.markUnimportant();

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


markUnread()

Marks this thread as unread.

// Mark first inbox thread as unread
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.markUnread();

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


moveToArchive()

Moves this thread to the archive.

// Archive first inbox thread
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.moveToArchive();

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

moveToInbox()

Moves this thread to the inbox.

// Move first non-inbox thread to inbox
constfirstThread=GmailApp.search('-in:inbox')[0];
firstThread.moveToInbox();

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

moveToSpam()

Moves this thread to spam.

// Move first inbox thread to spam
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.moveToSpam();

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

moveToTrash()

Moves this thread to the trash.

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

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

refresh()

Reloads this thread, and associated state from Gmail (useful in case the labels, read state, etc., have changed).

constfirstThread=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 ...

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

removeLabel(label)

Removes this label from the thread.

constmyLabel=GmailApp.getUserLabelByName('<your label>');
constthreads=myLabel.getThreads();
for(constthreadofthreads){
thread.removeLabel(myLabel);
}

Parameters

NameTypeDescription
labelGmailLabel the label to remove from this thread

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


reply(body)

Reply to the sender of the last message on this thread using the replyTo address.

Note that the total size of the email (including all headers) may not exceed 20KB.

// Respond to author of last email in thread with acknowledgment
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.reply('Got your message');

Parameters

NameTypeDescription
bodyStringthe body of the email

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


reply(body, options)

Reply to the sender of the last message on this thread using the replyTo address, with optional arguments. The email can contain both plain text, and also an HTML body. Note that the total size of the email (including all headers, but excluding attachments) may not exceed 20KB.

// Respond with HTML body text.
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.reply('incapable of HTML',{
htmlBody:'some HTML body text',
noReply:true,
});

Parameters

NameTypeDescription
bodyStringthe body of the email
optionsObjecta JavaScript object that specifies advanced parameters, as listed below

Advanced parameters

NameTypeDescription
ccStringa comma separated list of email addresses to CC
bccStringa comma separated list of email addresses to BCC
htmlBodyStringif 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
nameStringthe name of the sender of the email (default: the user's name)
fromStringthe address that the email should be sent from, which must be one of the values returned by GmailApp.getAliases()
replyToStringan email address to use as the default reply-to address (default: the user's email address)
noReplyBooleantrue 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
attachmentsBlobSource[] an array of files to send with the email
inlineImagesObjecta 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" />

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


replyAll(body)

Reply to the sender (using the replyTo address), and all recipients of the last message on this thread.

Note that the total size of the email (including all headers) may not exceed 20KB.

// Respond to all with acknowledgment to the first thread in the inbox
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.replyAll('Got your message');

Parameters

NameTypeDescription
bodyStringthe body of the email

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also


replyAll(body, options)

Reply to the sender (using the replyTo address), and all recipients of the last message on this thread, with optional arguments. The email can contain both plain text, and also an HTML body. Note that the total size of the email (including all headers, but excluding attachments) may not exceed 20KB.

// Respond with HTML body text.
constfirstThread=GmailApp.getInboxThreads(0,1)[0];
firstThread.replyAll('incapable of HTML',{
htmlBody:'some HTML body text',
noReply:true,
});

Parameters

NameTypeDescription
bodyStringthe body of the email
optionsObjecta JavaScript object that specifies advanced parameters, as listed below

Advanced parameters

NameTypeDescription
ccStringa comma separated list of email addresses to CC
bccStringa comma separated list of email addresses to BCC
htmlBodyStringif 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
nameStringthe name of the sender of the email (default: the user's name)
fromStringthe address that the email should be sent from, which must be one of the values returned by GmailApp.getAliases()
replyToStringan email address to use as the default reply-to address (default: the user's email address)
noReplyBooleantrue 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 G Suite accounts, not Gmail users
attachmentsBlobSource[] an array of files to send with the email
inlineImagesObjecta 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" />

Return

GmailThread — this thread, useful for chaining

Authorization

Scripts that use this method require authorization with one or more of the following scopes or appropriate scopes from the related REST API:

  • https://mail.google.com/

See also

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2024年12月03日 UTC.