Ivan Ivković
Trag&RazvojKako besplatno i automatski izvući sve e-mail adrese iz Gmail-a
Š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
- Otvorite internet pregledač i ukucajte sheets.new kako biste otvorili novu, praznu Google Tabelu.
- U gornjem meniju kliknite na Ekstenzije (Extensions) i izaberite Apps Script.
- Otvoriće vam se novi prozor za unos koda. Obrišite sve što tu trenutno piše, obično stoji
function myFunction() { ... } 
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.

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:
- Kliknite na Pregledaj dozvole (Review permissions).
- Izaberite svoj nalog.
- Pojaviće se upozorenje da aplikacija nije verifikovana. Ne brinite, to je zato što ste vi autor koda. Kliknite na Napredno (Advanced) na dnu.
- Kliknite na Idi na Untitled project (nebezbedno) / Go to Untitled project (unsafe).
- 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:
- 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.
- 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