Guest User

Untitled

a guest
Oct 23rd, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.45 KB | None | 0 0
  1. function getEmails() {
  2. // set spreadsheet and retrieve labels
  3. var ss = SpreadsheetApp.getActiveSpreadsheet();
  4. var labels = GmailApp.getUserLabels(), emptyLabels = [];
  5.  
  6. // itterate through the labels
  7. for (var i=0; i<labels.length; i++) {
  8.  
  9. try {
  10. // create sheets and clear content
  11. var sh = ss.getSheetByName(labels[i].getName()) ||
  12. ss.insertSheet(labels[i].getName(), ss.getSheets().length);
  13. sh.clear();
  14.  
  15. // get all messages
  16. var eMails = GmailApp.getMessagesForThreads(
  17. GmailApp.search("label:" + labels[i].getName()))
  18. .reduce(function(a, b) {return a.concat(b);})
  19. .map(function(eMails) {
  20. return eMails.getFrom()
  21. });
  22.  
  23. // sort and filter for unique entries
  24. var aEmails = eMails.sort().filter(function(el,j,a)
  25. {if(j==a.indexOf(el))return 1;return 0});
  26.  
  27. // create 2D-array
  28. var aUnique = new Array();
  29. for(var k in aEmails) {
  30. aUnique.push([aEmails[k]]);
  31. }
  32.  
  33. // add data to corresponding sheet
  34. sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
  35. } catch (e) {
  36. emptyLabels.push(labels[i].getName());
  37. }
  38. }
  39. ss.toast("These sheets are empty: " + emptyLabels);
  40. }
  41.  
  42. function getEmails() {
  43. // http://stackoverflow.com/a/12029701/1536038
  44. // get all messages
  45. var eMails = GmailApp.getMessagesForThreads(
  46. GmailApp.search('after:2012/1/14 before:2013/8/15'))
  47. .reduce(function(a, b) {return a.concat(b);})
  48. .map(function(eMails) {
  49. return eMails.getFrom()
  50. });
  51.  
  52. // sort and filter for unique entries
  53. var aEmails = eMails.sort().filter(function(el,j,a)
  54. {if(j==a.indexOf(el))return 1;return 0});
  55.  
  56. // create 2D-array
  57. var aUnique = new Array();
  58. for(var k in aEmails) {
  59. aUnique.push([aEmails[k]]);
  60. }
  61.  
  62. // add data to sheet
  63. SpreadsheetApp.getActiveSheet().getRange(1, 1, aUnique.length, 1)
  64. .setValues(aUnique);
  65. }
  66.  
  67. function getEmails() {
  68. // set spreadsheet and retrieve labels
  69. var query = 'YOUR GMAIL SEARCH QUERY GOES HERE',
  70. ss = SpreadsheetApp.getActiveSpreadsheet(),
  71. sh = ss.getSheetByName(query) || ss.insertSheet(query, ss.getSheets().length),
  72. uniqueEmails = {},
  73. errors = [],
  74. // max chunk size
  75. chunkSize = 500,
  76. currentChunk = 0,
  77. threads,
  78. messages,
  79. i,
  80. j,
  81. k,
  82. msg,
  83. tos;
  84. sh.clear();
  85. while (currentChunk === 0 || threads.length === chunkSize) {
  86. try {
  87. // grab threads that match the query one chunk at a time
  88. threads = GmailApp.search(query, chunkSize * currentChunk, chunkSize);
  89. // grab corresponding messages from the threads
  90. messages = GmailApp.getMessagesForThreads(threads);
  91. for (i = 0; i < messages.length; i++) {
  92. msg = messages[i];
  93. for (j = 0; j < msg.length; j++) {
  94. // get the from
  95. uniqueEmails[msg[j].getFrom()] = true;
  96. // get the reply to
  97. uniqueEmails[msg[j].getReplyTo()] = true;
  98. // grab from the to field as well
  99. // this has a bug for people with commas in their names
  100. // tos = msg[j].getTo().split(',');
  101. // for (k = 0; k < tos.length; k++) {
  102. // uniqueEmails[tos[k]] = true;
  103. // }
  104. }
  105. }
  106. currentChunk += 1;
  107. } catch (e) {
  108. errors.push(e);
  109. }
  110. }
  111. // create 2D-array
  112. var aUnique = [];
  113. for (k in uniqueEmails) {
  114. aUnique.push([k]);
  115. }
  116.  
  117. // add data to corresponding sheet
  118. sh.getRange(1, 1, aUnique.length, 1).setValues(aUnique);
  119. }
Add Comment
Please, Sign In to add comment