Eccovi invece uno script per estrarre il primo indirizzo Email di tutte le pagine di un sito che fornisce informazioni sui Comuni, compreso gli indirizzi Email.
A differenza del codice VBA che fai girare localmente sul tuo PC impegnandolo a livello di risorse, questo codice gira a livello WEB come script di un foglio di calcolo di Google.
Così facendo l’elaborazione dei dati viene effettuata dai Server di Google e non va a inficiare sulle prestazioni della connessione e del pc.
function EstraiEmail() { // Memorizzo l'ultima riga elaborata dallo script. Google ha un limite di tempo, è utile quindi sapere fino a che punto ha elaborato per poi ripartire da quel punto var ultimaRigaElaborata = SpreadsheetApp.getActive().getSheetByName('test').getLastRow(); // memorizza quante righe ci sono nel foglio di excel var Righe = SpreadsheetApp.getActive().getSheetByName('Comuni2016').getLastRow()-1; var riga = 1; // controllo se l'ultima riga elaborata è maggiore di 2, in caso affermativo associo alla variabile riga il valore di ultimaRigaElaborata // questo mi permette di ripartire con l'elaborazione da dove si era fermato a causa del limite di tempo imposto da Google per l'esecuzione di uno script if (ultimaRigaElaborata > 2) { riga = ultimaRigaElaborata; } while (riga < Righe){ riga++; // memorizzo il valore del codice istat var codiceIstat = SpreadsheetApp.getActive().getSheetByName('Comuni2016').getRange("E" + riga).getValue(); // variabile in cui memorizzo il valore del url da ricercare var url = "http://italia.indettaglio.it/ita/email/email_out.html?id_comune=" + codiceIstat; // memorizza il valore nel logger - menu - visualizza - log // Logger.log(url); // imposto la pagina da cui prelevare l'indirizzo email var page = UrlFetchApp.fetch(url).getContentText(); // imposto i tag iniziali che delimitano l'inizio del valore che ricerco - vedi sorgente della pagina web var TD = "<TD><I>"; var start = page.indexOf(''); start = page.indexOf(TD, start); // imposto il tag finale all'interno del quale è racchiuso il valore ricercato var end = page.indexOf('</I></TD>',start); var email = page.substring (start + TD.length , end); // scrive il risultato nel foglio test del foglio di calcolo attivo SpreadsheetApp.getActive().getSheetByName('test').getRange('A' + riga).setValue(email); } }
Per inserire questo script nel vostro foglio di calcolo di google occorre cliccare su Menu Strumenti -> Editor di Script e poi incollare il codice nella finestra che appare.
Fonti :
https://sites.google.com/a/unifiedlearning.co.uk/scripting/starting-out/looping
2 commenti
Mario · 22/11/2017 alle 3:38 am
ciao ho visto la tua guida su come estrarre gli indirizzi web dei comuni italiani
ho visto che il codice non è più funzionante perchè ora il link del web hanno questa struttura
http://italia.indettaglio.it/ita/email/selettore_email.html?id_regione=01&id_provincia=001&id_comune=001007
non sono un programmatore e non saprei proprio come sistemare il codice..
potresti indicarmi come procedere?
ti ringrazio molto
mario
admin · 22/11/2017 alle 3:42 am
Buongiorno, il sito ha cambiato nel corso del tempo la sua struttura e quindi il codice non è più in grado di prelevare le informazioni.
Sarebbe da adattare il codice ma non ho il tempo per verificare se modificandolo sia ancora possibile prelevare le informazioni
Se desidera posso inviarle il file con tutte le mail e info prelevate all’epoca in cui funzionava.