Overview
Using Google Apps Script (GAS) to extract email subjects and sender addresses from starred Gmail messages and output them to a Google Spreadsheet.
GAS Code
function extractStarredEmails() {
// Get starred threads
var threads = GmailApp.getStarredThreads();
// Get active spreadsheet
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
// Write header row
sheet.getRange(1, 1).setValue("Subject");
sheet.getRange(1, 2).setValue("From");
sheet.getRange(1, 3).setValue("Date");
var row = 2;
for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var message = messages[j];
// Extract subject, sender, and date
var subject = message.getSubject();
var from = message.getFrom();
var date = message.getDate();
// Write to spreadsheet
sheet.getRange(row, 1).setValue(subject);
sheet.getRange(row, 2).setValue(from);
sheet.getRange(row, 3).setValue(date);
row++;
}
}
Logger.log("Extraction complete. " + (row - 2) + " messages processed.");
}
Usage
- Open Google Spreadsheet
- Go to Extensions > Apps Script
- Paste the code above
- Click Run
- Grant necessary permissions when prompted
- The script will extract all starred email subjects and addresses to the spreadsheet
Notes
GmailApp.getStarredThreads()retrieves all starred threads- By default, it retrieves up to 500 threads; use the second parameter to specify a limit:
var threads = GmailApp.getStarredThreads(0, 100); // Start at 0, get 100 message.getFrom()returns the full sender string including name and email address (e.g.,"John Doe <john@example.com>")- To extract just the email address, parse the string:
var fromFull = message.getFrom(); var emailMatch = fromFull.match(/<(.+)>/); var email = emailMatch ? emailMatch[1] : fromFull;