Kako besplatno i automatski izvući sve e-mail adrese iz Gmail-a

Kako besplatno i automatski izvući sve e-mail adrese iz Gmail-a
Tutorijal: Kako besplatno i automatski izvući sve e-mail adrese iz Gmail-a (Pošiljaoci + Tekst poruke)
Ako ste ikada imali potrebu da izvučete e-mail adrese sa kojima ste komunicirali – bilo da pravite mailing listu, obnavljate bazu kontakata ili radite migraciju – verovatno ste shvatili da Gmail nema jednostavno "Export sve" dugme koje radi posao kako treba.
Postoje razni dodaci (Add-ons) koji ovo nude, ali većina njih se plaća, zahteva pristup vašim privatnim podacima od strane trećih lica, ili prosto ne umeju da pročitaju adrese koje se nalaze sakrivene unutar samog teksta mejla.
U ovom tutorijalu pokazujem kako da napravite sopstvenu, 100% besplatnu i bezbednu skriptu koristeći Google Apps Script. Skripta će pretražiti vaše sanduče, izvući adrese pošiljalaca, ali i "pročitati" tekst mejla i izvući sve adrese koje se u njemu spominju, a zatim sve to uredno spakovati u Google Tabelu.

Šta vam je potrebno?

  • Vaš Google nalog.
  • 5 minuta slobodnog vremena.

Šta vam nije potrebno?

  • Nije potrebno prethodno programersko znanje.

Korak 1: Kreiranje Google Tabele

  1. Otvorite internet pregledač i ukucajte sheets.new kako biste otvorili novu, praznu Google Tabelu.
  2. U gornjem meniju kliknite na Ekstenzije (Extensions) i izaberite Apps Script.
  3. Otvoriće vam se novi prozor za unos koda. Obrišite sve što tu trenutno piše, obično stoji
function myFunction() { ... } 

Prikaz menija za otvaranje Apps Script editora u Google Tabelama

Korak 2: Ubacivanje koda

Kopirajte kod ispod i nalepite ga u onaj prazan prostor u Apps Script-u.

function izvuciSveMejlove() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Očisti tabelu i postavi zaglavlja
sheet.clear(); sheet.appendRow(["Izvor / Ime", "Email adresa"]);
sheet.getRange("A1:B1").setFontWeight("bold");

// Pretraži Gmail - SMANJENO na 100 prepiski.
// Čitanje teksta iz mejlova zahteva više vremena, pa smanjujemo broj kako skripta ne bi prekinula rad.
var threads = GmailApp.search("in:anywhere", 2400, 500);
var extract = []; var uniqueEmails = new Set(); // Formula (Regex) koja prepoznaje bilo koju e-mail adresu u tekstu
var emailRegex = /[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}/g;

for (var i = 0; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var j = 0; j < messages.length; j++) {
var msg = messages[j]; // 1. KORAK: Izvlačenje adrese pošiljaoca (kao i ranije)
var from = msg.getFrom();
var ime = "";
var email = from;
var matchFrom = from.match(/(.*)<(.*)>/);
if (matchFrom) {
ime = matchFrom[1].replace(/"/g, "").trim();
email = matchFrom[2].trim();
} else {
ime = "Pošiljalac";
email = from.trim();
}
if (!uniqueEmails.has(email.toLowerCase()) && email !== "") {
uniqueEmails.add(email.toLowerCase());
extract.push([ime, email.toLowerCase()]);
}

// 2. KORAK: Skeniranje TELA (teksta) mejla za dodatne adrese
var body = msg.getPlainBody(); // Uzima samo čist tekst, bez HTML koda
if (body) {
var foundEmails = body.match(emailRegex); // Traži sve što se poklapa sa formatom mejla
if (foundEmails) {
for (var k = 0; k < foundEmails.length; k++) {
var bodyEmail = foundEmails[k].trim();
// Provera da li smo već dodali tu adresu
if (!uniqueEmails.has(bodyEmail.toLowerCase())) {
uniqueEmails.add(bodyEmail.toLowerCase());
// Za adrese iz teksta nemamo ime, pa pišemo "Pronađeno u tekstu"
extract.push(["Pronađeno u tekstu", bodyEmail.toLowerCase()]);
}
}
}
}
}
}
// Upisivanje podataka nazad u Google Tabelu
if (extract.length > 0) {
sheet.getRange(2, 1, extract.length, 2).setValues(extract);
sheet.autoResizeColumn(1); sheet.autoResizeColumn(2);
}
SpreadsheetApp.getUi().alert("Završeno! Pronađeno je " + extract.length + " jedinstvenih e-mail adresa (uključujući pošiljaoce i one iz teksta)."); }

Nakon što ste ubacili kod, kliknite na ikonicu diskete (Save) u gornjem meniju.

Prikaz unosa JavaScript koda za ekstrakciju mejlova u Apps Script editor

Korak 3: Odobravanje pristupa i pokretanje

Sada dolazi deo kada treba da pokrenete skriptu klikom na dugme Pokreni (Run) – ikonica "Play" (▶) u gornjem meniju. Pošto vaša skripta zahteva pristup vašem Gmailu, Google će vam tražiti dozvolu:

  1. Kliknite na Pregledaj dozvole (Review permissions).
  2. Izaberite svoj nalog.
  3. Pojaviće se upozorenje da aplikacija nije verifikovana. Ne brinite, to je zato što ste vi autor koda. Kliknite na Napredno (Advanced) na dnu.
  4. Kliknite na Idi na Untitled project (nebezbedno) / Go to Untitled project (unsafe).
  5. Kliknite na Dozvoli (Allow).

Vratite se u Google Tabelu. Posle par sekundi, videćete kako se kolone magično pune izvučenim imenima i e-mail adresama, sortirane i bez duplikata!

⚠️ Rešavanje problema: Pretraga više od 100 mejlova i Google limiti

Ako detaljno pogledate kod, videćete ovu liniju: GmailApp.search("in:anywhere", 0, 100); Brojevi 0 i 100 označavaju da skripta pretražuje od prve prepiske i obrađuje narednih 100.

Zašto ne stavimo prosto 10.000?

Google ima dva striktna ograničenja:

  1. Maksimalan broj u jednom cugu (treći argument) ne sme da pređe 500, inače ćete dobiti grešku Argument max cannot exceed 500.
  2. Skripta sme da radi maksimalno 6 minuta. Pošto ova skripta otvara i čita tekst svakog pojedinačnog mejla, to zahteva vreme.

Kako da pretražite celo sanduče?

Koristite metodu "listanja stranica". Prvo pokrenite skriptu sa: 0, 500 (prvih 500 prepiski). Kada završi, promenite kod na 500, 500 i ponovo pokrenite (skripta sada čita od 500. do 1000. prepiske). Sledeći krug neka bude 1000, 500, pa 1500, 500 i tako dalje.

Napomene:

  • Ako pretražujete samo pošiljaoce, a ne i tekst mejla, proces je mnogo brži i tada možete slobodno staviti limite na 0, 500 kao u primeru iznad, ali ako pretražujete i telo mejlova može se desiti da će skript raditi duže od 6 minuta i neće se izvršiti. Testirajte!
  • Ima i drugih modela, ali za ovaj ne morate izdvajati novac za dodatke, novac za učenje programiranja i slično.

Vaš komentar

Možete upisati još 500 karaktera
Pretplatite se na mesečni bilten