Lista alla avsändares e-postadresser från Gmail eller Google apps mail

Google drive

Google drive

Härom dagen kom jag över ett finurligt litet skript som löste ett stort problem för ett företag jag byggde en WordPresshemsida åt och sedan tidigare installerat Googles företagstjänster.

Företaget behövde ha ut en lista på alla som skickat mail till deras ordermailbox som de sedan i sin tur kunde skicka nyheter till. I princip är det bara deras kunder som mailar den här adressen, men där fanns över 5000 mail och det skulle vara ett stort jobb att skapa en sändlista med alla dem och plocka bort dubletter. Då kom detta skript väl till pass.

Det funkar utmärkt, förutsatt att du använder Google apps eller Gmail som mailtjänst. Det som händer är:

  1. Du är inloggad på det aktuella Google-kontot
  2. Går till Google Drive och kör det här scriptet
  3. Ett nytt google spreadsheet ark öppnas i Google Documents
  4. Skriv ”All” eller ange annan annan Gmail-etikett varifrån du vill hämta adressera
  5. Kör scriptet.

Då börjar scriptet jobba och skickar dig ett mail när det hämtat alla adresserna, listat dem i kalkylarket och dessutom plockat bort alla dubletter.

Företaget sparade en massa timmar i att försöka gå igenom alla adresser och kunde sedan enkelt importera dem till Mailchimp, det system de använder för att göra nyhetsutskick. Skriptet kommer att användas på företagets alla google apps adresser så att ingen kund missas i fortsättningen vid nyhetsutskick.

 

Här är scriptet:

/** This script will extract email address from your Gmail mailbox **/
/** Written by Amit Agarwal on 06/13/2013 **/

function extractEmailAddresses() {

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var monitor = sheet.getRange("A2").getValue();
var processed = sheet.getRange("B2").getValue();

var label = GmailApp.getUserLabelByName(processed);
var search = "in:" + monitor + " -in:" + processed;

// Process 50 Gmail threads in a batch to prevent script execution errors
var threads = GmailApp.search(search, 0, 50);

var row, messages, from, email;

try {

for (var x=0; x<threads.length; x++) { // Use Regular Expression to extract valid email address from = threads[x].getMessages()[0].getFrom(); from = from.match(/\S+@\S+\.\S+/g); if ( from.length ) { email = from[0]; email = email.replace(">", "");
email = email.replace("<", "");

row = sheet.getLastRow() + 1;
// If an email address if found, add it to the sheet
sheet.getRange(row,1).setValue(email);
}

threads[x].addLabel(label);

}

}

catch (e) {
Logger.log(e.toString());
Utilities.sleep(5000);
}

// All messages in the label have been processed?
if ( threads.length === 0 ) {
GmailApp.sendEmail(Session.getActiveUser().getEmail(), "Extraction Done",
"Download the sheet from " + ss.getUrl());
}
}

// Remove Duplicate Email addresses
function cleanList() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getRange(4, 1, sheet.getLastRow()).getValues();
var newData = new Array();
for(i in data){
var row = data[i];
var duplicate = false;
for(j in newData){
if(row[0] == newData[j][0]){
duplicate = true;
}
}
if(!duplicate){
newData.push(row);
}
}

// Put the unique email addresses in the Google sheet
sheet.getRange(4, 2, newData.length, newData[0].length).setValues(newData);
}

Skriptet är skrivet av en Amit Agarwal som driver Digital Inspirations

Läs mer  här eller kontakta mig om du vill veta mer.

 

/Niklas

Niklas Lagström

Niklas Lagström driver Lagrafica, ett företag som arbetar med att producera video för webben främst för reklam och marknadsföring. Vårt fokus är att konvertera våra uppdragsgivares produktioner till nya kunder. Vi samarbetar med de bästa reklam och kommunikationsbyråerna för att mäta nyttan och effekten av investeringen hos oss.
För att kunna leverera en helhet erbjuder även Lagrafica tjänster inom produktfotografi och Wordpressutveckling.