Exporting emails to Google Sheets can be automated using Google Apps Script. It connects Gmail to Sheets, extracts details like sender, subject, date, and body, and logs them into rows. This helps organize and analyze emails without manual copy-pasting, ideal for tracking leads, support requests, or client communication.
- Step 1: Click on the
Copy
button to copy the code snippet. - Step 2: Paste the copied code into your project’s script editor.
Apps Scripts Blog
Apps Scripts Code
function exportInboxEmailsToSheet() { try { var batchSize = 500; var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getActiveSheet(); if (!sheet) { sheet = spreadsheet.insertSheet(); } var lastRow = sheet.getLastRow(); if (lastRow > 0) { sheet.getRange(2, 1, lastRow, sheet.getLastColumn()).clear(); } var data = []; var start = 0; var threads; var totalEmails = 0; var scriptProperties = PropertiesService.getScriptProperties(); var lastProcessedTimestamp = scriptProperties.getProperty('lastProcessedTimestamp'); do { threads = GmailApp.search('in:inbox', start, batchSize); 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]; var timestamp = message.getDate(); if (lastProcessedTimestamp && timestamp <= new Date(lastProcessedTimestamp)) { continue; } var threadCount = message.getThread().getMessageCount(); var fromEmail = message.getFrom(); var toEmail = message.getTo(); var subject = message.getSubject(); var bodyContent = message.getPlainBody().substring(0, 1000); var messageId = message.getId(); var link = 'https://mail.google.com/mail/u/0/#inbox/' + messageId; var row = [timestamp, threadCount, fromEmail, toEmail, subject, bodyContent, link]; data.unshift(row); totalEmails++; } } if (totalEmails > 0) { lastProcessedTimestamp = data[0][0]; scriptProperties.setProperty('lastProcessedTimestamp', lastProcessedTimestamp); sheet.getRange(2, 1, data.length, data[0].length).setValues(data.reverse()); data = []; SpreadsheetApp.flush(); } start += batchSize; } while (threads.length == batchSize); Logger.log("Exported " + totalEmails + " new emails to the active sheet."); } catch (e) { Logger.log("Error exporting emails: " + e.toString()); throw e; } }