Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function getEmails() {
- // set spreadsheet and retrieve labels
- var ss = SpreadsheetApp.getActiveSpreadsheet();
- var labels = GmailApp.getUserLabels(), emptyLabels = [];
- // itterate through the labels
- for (var i=0; i<labels.length; i++) {
- try {
- // create sheets and clear content
- var sh = ss.getSheetByName(labels[i].getName()) ||
- ss.insertSheet(labels[i].getName(), ss.getSheets().length);
- sh.clear();
- // get all messages
- var eMails = GmailApp.getMessagesForThreads(
- GmailApp.search("label:" + labels[i].getName()))
- .reduce(function(a, b) {return a.concat(b);})
- .map(function(eMails) {
- return eMails.getFrom()
- });
- // sort and filter for unique entries
- var aEmails = eMails.sort().filter(function(el,j,a)
- {if(j==a.indexOf(el))return 1;return 0});
- // create 2D-array
- var aUnique = new Array();
- for(var k in aEmails) {
- aUnique.push([aEmails[k]]);
- }
- // add data to corresponding sheet
- sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
- } catch (e) {
- emptyLabels.push(labels[i].getName());
- }
- }
- ss.toast("These sheets are empty: " + emptyLabels);
- }
- function getEmails() {
- // http://stackoverflow.com/a/12029701/1536038
- // get all messages
- var eMails = GmailApp.getMessagesForThreads(
- GmailApp.search('after:2012/1/14 before:2013/8/15'))
- .reduce(function(a, b) {return a.concat(b);})
- .map(function(eMails) {
- return eMails.getFrom()
- });
- // sort and filter for unique entries
- var aEmails = eMails.sort().filter(function(el,j,a)
- {if(j==a.indexOf(el))return 1;return 0});
- // create 2D-array
- var aUnique = new Array();
- for(var k in aEmails) {
- aUnique.push([aEmails[k]]);
- }
- // add data to sheet
- SpreadsheetApp.getActiveSheet().getRange(1, 1, aUnique.length, 1)
- .setValues(aUnique);
- }
- function getEmails() {
- // set spreadsheet and retrieve labels
- var query = 'YOUR GMAIL SEARCH QUERY GOES HERE',
- ss = SpreadsheetApp.getActiveSpreadsheet(),
- sh = ss.getSheetByName(query) || ss.insertSheet(query, ss.getSheets().length),
- uniqueEmails = {},
- errors = [],
- // max chunk size
- chunkSize = 500,
- currentChunk = 0,
- threads,
- messages,
- i,
- j,
- k,
- msg,
- tos;
- sh.clear();
- while (currentChunk === 0 || threads.length === chunkSize) {
- try {
- // grab threads that match the query one chunk at a time
- threads = GmailApp.search(query, chunkSize * currentChunk, chunkSize);
- // grab corresponding messages from the threads
- messages = GmailApp.getMessagesForThreads(threads);
- for (i = 0; i < messages.length; i++) {
- msg = messages[i];
- for (j = 0; j < msg.length; j++) {
- // get the from
- uniqueEmails[msg[j].getFrom()] = true;
- // get the reply to
- uniqueEmails[msg[j].getReplyTo()] = true;
- // grab from the to field as well
- // this has a bug for people with commas in their names
- // tos = msg[j].getTo().split(',');
- // for (k = 0; k < tos.length; k++) {
- // uniqueEmails[tos[k]] = true;
- // }
- }
- }
- currentChunk += 1;
- } catch (e) {
- errors.push(e);
- }
- }
- // create 2D-array
- var aUnique = [];
- for (k in uniqueEmails) {
- aUnique.push([k]);
- }
- // add data to corresponding sheet
- sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
- }
Add Comment
Please, Sign In to add comment