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.

Lascia un commento