Class GmailThread Stay organized with collections Save and categorize content based on your preferences.
Page Summary
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()andremoveLabel()methods.Methods like
createDraftReply(),createDraftReplyAll(),reply(), andreplyAll()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(), andgetMessages().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(), andisUnread().
A thread in a user's Gmail account.
Methods
| Method | Return type | Brief description |
|---|---|---|
add | Gmail | Adds this label to the thread. |
create | Gmail | Creates a draft message replying to the sender of the last message in this thread using thereply-to address. |
create | Gmail | Creates a draft message replying to the sender of the last message in this thread using thereply-to address, with optional arguments. |
create | Gmail | Creates a draft message replying to the sender of the last message in this thread, using thereply-to address and all recipients of this message. |
create | Gmail | Creates a draft message replying to the sender of the last message in this thread, using thereply-to address and all recipients, with optional arguments. |
get | String | Gets the subject of the first message in the thread. |
get | String | Gets the ID of this thread. |
get | Gmail | Returns the user-created labels on this thread. |
get | Date | Gets the date of this thread's most recent message. |
get | Integer | Returns the number of messages in the thread. |
get | Gmail | Gets the messages in this thread. |
get | String | Gets a permalink for this thread. |
has | Boolean | Returns whether the thread has any starred messages. |
is | Boolean | Returns whether the thread is marked as important. |
is | Boolean | Returns whether the thread is labeled a chat. |
is | Boolean | Returns whether the thread is in the inbox. |
is | Boolean | Returns true if this thread is in the priority inbox; returns false otherwise. |
is | Boolean | Returns whether the thread is marked as spam. |
is | Boolean | Returns whether the thread is in the trash. |
is | Boolean | Returns whether the thread has any unread messages. |
mark | Gmail | Marks this thread as important. |
mark | Gmail | Marks this thread as read. |
mark | Gmail | Marks this thread as unimportant. |
mark | Gmail | Marks this thread as unread. |
move | Gmail | Moves this thread to the archive. |
move | Gmail | Moves this thread to the inbox. |
move | Gmail | Moves this thread to spam. |
move | Gmail | Moves this thread to the trash. |
refresh() | Gmail | Reloads this thread, and associated state from Gmail (useful in case the labels, read state,etc., have changed). |
remove | Gmail | Removes this label from the thread. |
reply(body) | Gmail | Reply to the sender of the last message on this thread using the replyTo address. |
reply(body, options) | Gmail | Reply to the sender of the last message on this thread using the replyTo address, with optionalarguments. |
reply | Gmail | Reply to the sender (using the replyTo address), and all recipients of the last message on thisthread. |
reply | Gmail | Reply to the sender (using thereply address), and all recipients of the last messageon this thread, with optional arguments. |
Detailed documentation
addLabel(label)
Adds this label to the thread.
// Add label MyLabel to the first thread in the inboxconstlabel=GmailApp.getUserLabelByName('MyLabel');constfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.addLabel(label);
Parameters
| Name | Type | Description |
|---|---|---|
label | Gmail | the label to apply to this thread |
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 thereply-to address. The size of the email (including headers) isquota limited.
// Create a draft reply to the message author with an acknowledgement.constfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.createDraftReply('Got your message');
Parameters
| Name | Type | Description |
|---|---|---|
body | String | the body of the email |
Return
Gmail — the newly created draft message
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 thereply-to address, with optional arguments.
The email can contain both plain text and an HTML body. The size of the email (includingheaders) isquotalimited.
// 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
| Name | Type | Description |
|---|---|---|
body | String | the body of the email |
options | Object | a JavaScript object that specifies advanced parameters, as listed below |
Advanced parameters
| Name | Type | Description |
|---|---|---|
attachments | Blob | an array of files to send with the email |
bcc | String | a comma-separated list of email addresses to BCC |
cc | String | a comma-separated list of email addresses to CC |
from | String | the address that the email should be sent from, which must be one of the values returned byGmail |
html | String | if set, devices capable of rendering HTML will use it instead of the required body argument; you can add an optionalinline field in HTML body if you have inlined images for your email |
inline | Object | a JavaScript object containing a mapping from image key (String) to image data (Blob); this assumes that thehtml parameter is used and contains references to these images in the format<img src="cid:imageKey" /> |
name | String | the name of the sender of the email (default: the user's name) |
reply | String | an email address to use as the default reply-to address (default: the user's email address) |
subject | String | a new subject line for the email (250 characters maximum) |
Return
Gmail — the newly created draft message
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 thereply-to address and all recipients of this message. The size of the email (including headers)isquota 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
| Name | Type | Description |
|---|---|---|
body | String | the body of the email |
Return
Gmail — the newly created draft message
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 thereply-to address and all recipients, with optional arguments.
The email can contain both plain text and an HTML body. The size of the email (includingheaders) isquotalimited.
// 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
| Name | Type | Description |
|---|---|---|
body | String | the body of the email |
options | Object | a JavaScript object that specifies advanced parameters, as listed below |
Advanced parameters
| Name | Type | Description |
|---|---|---|
attachments | Blob | an array of files to send with the email |
bcc | String | a comma-separated list of email addresses to BCC |
cc | String | a comma-separated list of email addresses to CC |
from | String | the address that the email should be sent from, which must be one of the values returned byGmail |
html | String | if set, devices capable of rendering HTML will use it instead of the required body argument; you can add an optionalinline field in HTML body if you have inlined images for your email |
inline | Object | a JavaScript object containing a mapping from image key (String) to image data (Blob); this assumes that thehtml parameter is used and contains references to these images in the format<img src="cid:imageKey" /> |
name | String | the name of the sender of the email (default: the user's name) |
reply | String | an email address to use as the default reply-to address (default: the user's email address) |
subject | String | a new subject line for the email. Max size is 250 chars. |
Return
Gmail — the newly created draft message
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 inboxconstfirstThread=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 followingscopes or appropriate scopes from therelated 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 aconsistent ID for a particular message in the thread, callgetinstead.
// 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 inboxconstfirstThread=GmailApp.getInboxThreads(0,1)[0];constlabels=firstThread.getLabels();for(leti=0;i <labels.length;i++){Logger.log(labels[i].getName());}
Return
Gmail — an array of labels for this thread
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 inboxconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
getMessageCount()
Returns the number of messages in the thread.
// Log the number of messages in the threadconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
getMessages()
Gets the messages in this thread.
// Log the subjects of the messages in the threadconstfirstThread=GmailApp.getInboxThreads(0,1)[0];constmessages=firstThread.getMessages();for(leti=0;i <messages.length;i++){Logger.log(messages[i].getSubject());}
Return
Gmail — an array of Gmail messages in this thread
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
getPermalink()
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 inboxconstthread=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 messagesconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
isImportant()
Returns whether the thread is marked as important.
// Log if this thread is marked as importantconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
isInChats()
Returns whether the thread is labeled a chat.
// Log if this thread is a chatconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
isInInbox()
Returns whether the thread is in the inbox.
// Log if this thread is in the inboxconstfirstThread=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 followingscopes or appropriate scopes from therelated 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 inboxconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
isInSpam()
Returns whether the thread is marked as spam.
// Log if this thread is in the spam folderconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
isInTrash()
Returns whether the thread is in the trash.
// Log if this thread is in the trashconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
isUnread()
Returns whether the thread has any unread messages.
// Log if this thread is unreadconstfirstThread=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 followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
markImportant()
Marks this thread as important.
// Mark first inbox thread as importantconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.markImportant();
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
markRead()
Marks this thread as read.
// Mark first inbox thread as readconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.markRead();
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
markUnimportant()
Marks this thread as unimportant.
// Mark first inbox thread as unimportantconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.markUnimportant();
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
markUnread()
Marks this thread as unread.
// Mark first inbox thread as unreadconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.markUnread();
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
moveToArchive()
Moves this thread to the archive.
// Archive first inbox threadconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.moveToArchive();
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
moveToInbox()
Moves this thread to the inbox.
// Move first non-inbox thread to inboxconstfirstThread=GmailApp.search('-in:inbox')[0];firstThread.moveToInbox();
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
moveToSpam()
Moves this thread to spam.
// Move first inbox thread to spamconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.moveToSpam();
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
moveToTrash()
Moves this thread to the trash.
// Move first inbox thread to trashconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.moveToTrash();
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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
| Name | Type | Description |
|---|---|---|
label | Gmail | the label to remove from this thread |
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 acknowledgmentconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.reply('Got your message');
Parameters
| Name | Type | Description |
|---|---|---|
body | String | the body of the email |
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 optionalarguments. The email can contain both plain text, and also an HTML body. Note that the totalsize 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
| Name | Type | Description |
|---|---|---|
body | String | the body of the email |
options | Object | a JavaScript object that specifies advanced parameters, as listed below |
Advanced parameters
| Name | Type | Description |
|---|---|---|
cc | String | a comma separated list of email addresses to CC |
bcc | String | a comma separated list of email addresses to BCC |
html | String | if set, devices capable of rendering HTML will use it instead of the required body argument; you can add an optionalinline field in HTML body if you have inlined images for your email |
name | String | the name of the sender of the email (default: the user's name) |
from | String | the address that the email should be sent from, which must be one of the values returned byGmail |
reply | String | an email address to use as the default reply-to address (default: the user's email address) |
no | Boolean | true if the email should be sent from a generic no-reply email address to discourage recipients from responding to emails; this option is only possible for Google Workspace accounts, not Gmail users |
attachments | Blob | an array of files to send with the email |
inline | Object | a JavaScript object containing a mapping from image key (String) to image data (Blob); this assumes that thehtml parameter is used and contains references to these images in the format<img src="cid:imageKey" /> |
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated 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 thisthread.
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 inboxconstfirstThread=GmailApp.getInboxThreads(0,1)[0];firstThread.replyAll('Got your message');
Parameters
| Name | Type | Description |
|---|---|---|
body | String | the body of the email |
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
replyAll(body, options)
Reply to the sender (using thereply address), and all recipients of the last messageon this thread, with optional arguments. The email can contain both plain text, and also anHTML body. Note that the total size of the email (including all headers, but excludingattachments) 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
| Name | Type | Description |
|---|---|---|
body | String | the body of the email |
options | Object | a JavaScript object that specifies advanced parameters, as listed below |
Advanced parameters
| Name | Type | Description |
|---|---|---|
cc | String | a comma separated list of email addresses to CC |
bcc | String | a comma separated list of email addresses to BCC |
html | String | if set, devices capable of rendering HTML will use it instead of the required body argument; you can add an optionalinline field in HTML body if you have inlined images for your email |
name | String | the name of the sender of the email (default: the user's name) |
from | String | the address that the email should be sent from, which must be one of the values returned byGmail |
reply | String | an email address to use as the default reply-to address (default: the user's email address) |
no | Boolean | true if the email should be sent from a generic no-reply email address to discourage recipients from responding to emails; this option is only possible for G Suite accounts, not Gmail users |
attachments | Blob | an array of files to send with the email |
inline | Object | a JavaScript object containing a mapping from image key (String) to image data (Blob); this assumes that thehtml parameter is used and contains references to these images in the format<img src="cid:imageKey" /> |
Return
Gmail — this thread, useful for chaining
Authorization
Scripts that use this method require authorization with one or more of the followingscopes or appropriate scopes from therelated REST API:
https://mail.google.com/
See also
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-11 UTC.