5 funzioni di script di Fogli Google che devi conoscere

Fogli Google(Google Sheets) è un potente strumento per fogli di lavoro basato su cloud che ti consente di fare quasi tutto ciò che potresti fare in Microsoft Excel . Ma il vero potere di Fogli Google(Google Sheets) è la funzione di script(Google Scripting) di Google che ne deriva.

Lo scripting di Google Apps(Google Apps) è uno strumento di scripting in background che funziona non solo in Fogli Google(in Google Sheets) , ma anche in Documenti Google, Gmail, Google Analytics e quasi tutti gli altri servizi cloud di Google . Ti consente di automatizzare quelle singole app e integrare ciascuna di queste app tra loro.

In questo articolo imparerai come iniziare con lo scripting di Google Apps , creando uno script di base in Fogli Google(Google Sheets) per leggere e scrivere i dati delle celle e le più efficaci funzioni avanzate di script di Fogli Google .(Google Sheets)

Come creare uno script di Google Apps(How to Create a Google Apps Script)

Puoi iniziare subito a creare il tuo primo script di Google Apps dall'interno di Fogli Google(Google Sheets)

Per fare ciò, seleziona Strumenti(Tools) dal menu, quindi Editor di script(Script Editor) .

Questo apre la finestra dell'editor di script e imposta per impostazione predefinita una funzione chiamata myfunction() . Qui è dove puoi creare e testare il tuo Google Script .

Per provarlo, prova a creare una funzione di script di Fogli Google(Google Sheets) che leggerà i dati da una cella, eseguirà un calcolo su di essa e invierà la quantità di dati in un'altra cella.

La funzione per ottenere dati da una cella è le funzioni getRange()(getRange()) e getValue() . È possibile identificare la cella per riga e colonna. Quindi, se hai un valore nella riga 2 e nella colonna 1 (la colonna A), la prima parte del tuo script sarà simile a questa:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var row = 2;
   var col = 1;
   var data = sheet.getRange(row, col).getValue();
}

Questo memorizza il valore di quella cella nella variabile di dati . (data)È possibile eseguire un calcolo sui dati e quindi scrivere i dati in un'altra cella. Quindi l'ultima parte di questa funzione sarà:

   var results = data * 100;
   sheet.getRange(row, col+1).setValue(results);
}

Quando hai finito di scrivere la tua funzione, seleziona l'icona del disco per salvare. 

La prima volta che esegui una nuova funzione di script di Fogli Google(Google Sheets) come questa (selezionando l'icona Esegui), dovrai fornire l' autorizzazione(Authorization) per l'esecuzione dello script sul tuo account Google(Google Account) .

Consenti autorizzazioni per continuare. Una volta eseguito lo script, vedrai che lo script ha scritto i risultati del calcolo nella cella di destinazione.

Ora che sai come scrivere una funzione di script di Google Apps di base , diamo un'occhiata ad alcune funzioni più avanzate.

Usa getValues ​​per caricare gli array(Use getValues To Load Arrays)

Puoi portare il concetto di eseguire calcoli sui dati nel tuo foglio di calcolo con lo scripting a un nuovo livello utilizzando gli array. Se carichi una variabile nello script di Google Apps utilizzando getValues, la variabile sarà un array che può caricare più valori dal foglio.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var data = sheet.getDataRange().getValues();

La variabile data è una matrice multidimensionale che contiene tutti i dati del foglio. Per eseguire un calcolo sui dati, si utilizza un ciclo for . Il contatore del ciclo for funzionerà su ogni riga e la colonna rimane costante, in base alla colonna in cui si desidera estrarre i dati.

Nel nostro foglio di calcolo di esempio, puoi eseguire calcoli sulle tre righe di dati come segue.

for (var i = 1; i < data.length; i++) {
   var result = data[i][0] * 100;
   sheet.getRange(i+1, 2).setValue(result); 
   }
}

Salva(Save) ed esegui questo script proprio come hai fatto sopra. Vedrai che tutti i risultati vengono inseriti nella colonna 2 del foglio di lavoro.

Noterai che fare riferimento a una cella e a una riga in una variabile di matrice è diverso rispetto a una funzione getRange. 

data[i][0] si riferisce alle dimensioni dell'array in cui la prima dimensione è la riga e la seconda è la colonna. Entrambi iniziano da zero.

getRange(i+1, 2) si riferisce alla seconda riga quando i=1 (poiché la riga 1 è l'intestazione) e 2 è la seconda colonna in cui vengono archiviati i risultati.

Usa appendRow per scrivere i risultati(Use appendRow To Write Results)

Cosa succede se si dispone di un foglio di calcolo in cui si desidera scrivere i dati in una nuova riga anziché in una nuova colonna?

Questo è facile da fare con la funzione appendRow . Questa funzione non disturberà i dati esistenti nel foglio. Aggiungerà semplicemente una nuova riga al foglio esistente.

Ad esempio, crea una funzione che conterà da 1 a 10 e mostrerà un contatore con multipli di 2 in una colonna Contatore .(Counter)

Questa funzione sarebbe simile a questa:

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();

   for (var i = 1; i<11; i++) {
      var result = i * 2;
     sheet.appendRow([i,result]);
   }
}

Ecco i risultati quando si esegue questa funzione.

Elabora feed RSS con URLFetchApp(Process RSS Feeds With URLFetchApp)

Puoi combinare la precedente funzione di script di Fogli Google e (Google Sheets)URLFetchApp per estrarre il feed RSS da qualsiasi sito Web e scrivere una riga su un foglio di calcolo per ogni articolo pubblicato di recente su quel sito Web.

Questo è fondamentalmente un metodo fai(DIY) -da-te per creare il tuo foglio di calcolo del lettore di feed RSS !

Anche lo script per farlo non è troppo complicato.

function myFunction() {
   var sheet = SpreadsheetApp.getActiveSheet();
   var item, date, title, link, desc; 
   var txt = UrlFetchApp.fetch("https://www.topsecretwriters.com/rss").getContentText();
   var doc = Xml.parse(txt, false);  

   title = doc.getElement().getElement("channel").getElement("title").getText();
   var items = doc.getElement().getElement("channel").getElements("item");   

// Parsing single items in the RSS Feed

for (var i in items) {
   item  = items[i];
   title = item.getElement("title").getText();
   link  = item.getElement("link").getText();
   date  = item.getElement("pubDate").getText();
   desc  = item.getElement("description").getText();
   
   sheet.appendRow([title,link,date,desc]);
}
}

Come puoi vedere, Xml.parse estrae ogni elemento dal feed RSS e separa ogni riga in titolo, collegamento, data e descrizione. 

Usando la funzione appendRow , puoi inserire questi elementi nelle colonne appropriate per ogni singolo elemento nel feed RSS .

L'output nel tuo foglio sarà simile a questo:

Invece di incorporare l' URL del feed RSS nello script, potresti avere un campo nel tuo foglio con l' URL e quindi avere più fogli, uno per ogni sito web che desideri monitorare.

Concatena stringhe(Concatenate Strings) e aggiungi(Add) un ritorno a capo(Carriage Return)

Puoi portare il foglio di calcolo RSS un ulteriore passo avanti aggiungendo alcune funzioni di manipolazione del testo, quindi utilizzare le funzioni di posta elettronica per inviarti un'e-mail con un riepilogo di tutti i nuovi post nel feed RSS del sito .

Per fare ciò, sotto lo script che hai creato nella sezione precedente, ti consigliamo di aggiungere alcuni script che estraggono tutte le informazioni nel foglio di calcolo. 

Ti consigliamo di creare la riga dell'oggetto e il corpo del testo dell'e-mail analizzando insieme tutte le informazioni dallo stesso array di "elementi" che hai utilizzato per scrivere i dati RSS nel foglio di calcolo. 

Per fare ciò, inizializza l'oggetto e il messaggio inserendo le seguenti righe prima del ciclo For "elementi".

var subject = ‘Latest 10 articles published at mysite.com’
var message = ‘’

Quindi, alla fine del ciclo for "items" (subito dopo la funzione appendRow), aggiungi la riga seguente.

message = message + title + '\n' + link + '\n' + date + '\n' + desc + '\n' + '\n \n';

Il simbolo "+" concatenerà tutti e quattro gli elementi insieme seguito da " " per un ritorno a capo dopo ogni riga. Alla fine di ogni blocco di dati del titolo, vorrai due ritorni a capo per un corpo di posta elettronica ben formattato.

Una volta che tutte le righe sono state elaborate, la variabile "body" contiene l'intera stringa del messaggio di posta elettronica. Ora sei pronto per inviare l'e-mail!

Come inviare e-mail nello script di Google Apps(How To Send Email In Google Apps Script)

La prossima sezione del tuo Google Script sarà quella di inviare il "soggetto" e il "corpo" via e-mail. Farlo in Google Script è molto semplice.

var emailAddress = [email protected];
MailApp.sendEmail(emailAddress, subject, message);

MailApp è una classe(MailApp) molto comoda all'interno degli script di Google Apps che ti dà accesso al servizio di posta elettronica del tuo account Google per inviare o ricevere e-mail. Grazie a ciò, la singola riga con la funzione sendEmail consente di inviare qualsiasi email(send any email) con solo l'indirizzo email, l'oggetto e il corpo del testo.

Ecco come apparirà l'e-mail risultante. 

Combinando la possibilità di estrarre il feed RSS di un sito Web , archiviarlo in un foglio Google(Google Sheet) e inviarlo a te stesso con i collegamenti URL inclusi, è molto comodo seguire i contenuti più recenti per qualsiasi sito Web.

Questo è solo un esempio della potenza disponibile negli script di Google Apps per automatizzare le azioni e integrare più servizi cloud.



About the author

Sono uno sviluppatore di software freeware e sostenitore di Windows Vista/7. Ho scritto diverse centinaia di articoli su vari argomenti relativi al sistema operativo, inclusi suggerimenti e trucchi, guide di riparazione e best practice. Offro anche servizi di consulenza in ufficio attraverso la mia azienda, Help Desk Services. Ho una profonda conoscenza del funzionamento di Office 365, delle sue funzionalità e di come utilizzarle nel modo più efficace.



Related posts