Usa Fogli Google per inviare une-mail in base al valore della cella

Usa Fogli Google per inviare une-mail in base al valore della cella

L'invio di un'email da Fogli Google richiede l'utilizzo di uno script di Google Apps. Ma non preoccuparti, se non hai mai creato un solo script di Google Apps prima, inviare un'email è molto semplice.

Nel seguente tutorial imparerai come controllare il valore di una cella in Fogli Google . Se il valore supera un determinato limite di soglia, puoi inviare automaticamente un'e-mail di avviso a qualsiasi indirizzo e-mail che desideri.

Ci sono molti usi per questo script. Potresti ricevere un avviso se i guadagni giornalieri nel tuo rapporto sulle vendite scendono al di sotto di un certo livello. Oppure potresti ricevere un'e-mail se i tuoi dipendenti segnalano di aver addebitato al cliente troppe ore nel foglio di calcolo del monitoraggio del progetto.

Indipendentemente dall'applicazione, questo script è avvincente. Ti farà anche risparmiare il tempo di dover monitorare manualmente gli aggiornamenti del foglio di lavoro.

Passaggio 1: invio di un'e-mail con Fogli Google

Prima di poter creare uno script di Google Apps per inviare un'email da Fogli Google , avrai anche bisogno di un indirizzo email Gmail, a cui lo script di Google Apps avrà accesso per inviare le tue email di avviso.

Dovrai anche creare un nuovo foglio di lavoro che contenga un indirizzo email.

Basta aggiungere una colonna del nome e una colonna e-mail e compilarle con la persona a cui desideri ricevere l'e-mail di avviso.

Usa Fogli Google per inviare un'e-mail in base al valore della cella

Ora che hai un indirizzo e-mail a cui inviare un'e-mail di avviso, è il momento di creare il tuo script.

Per accedere all'editor di script, fare clic su Strumenti e quindi su Editor di script .

Vedrai una finestra di script con una funzione predefinita chiamata  myFunction() . Rinominalo in SendEmail() .

Quindi, incolla il seguente codice all'interno della funzione SendEmail():

// Fetch the email address var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("B2"); var emailAddress = emailRange.getValues(); // Send Alert Email. var message = 'This is your Alert email!'; // Second column var subject = 'Your Google Spreadsheet Alert'; MailApp.sendEmail(emailAddress, subject, message);

Ecco come funziona questo codice:

  • getRange e getValues ​​estraggono il valore dalla cella specificata nel metodo getRange.
  • var message e var subject definiscono il testo che creerà l'e-mail di avviso.
  • La funzione MailApp.sendEmail esegue infine la funzione di invio e-mail di Google Scripts utilizzando il tuo account Google connesso.

Salvare lo script facendo clic sull'icona del disco , quindi eseguirlo facendo clic sull'icona di esecuzione (freccia destra).

Tieni presente che Google Script ha bisogno dell'autorizzazione per accedere al tuo account Gmail per inviare l'e-mail. Quindi la prima volta che esegui lo script, potresti visualizzare un avviso come di seguito.

Usa Fogli Google per inviare un'e-mail in base al valore della cella

Fai clic su Rivedi autorizzazioni e vedrai un'altra schermata di avviso che dovrai ignorare.

Questa schermata di avviso è perché stai scrivendo uno script Google personalizzato che non è registrato come ufficiale.

Usa Fogli Google per inviare un'e-mail in base al valore della cella

Basta fare clic su Avanzate , quindi fare clic sul collegamento Vai a SendEmail (non sicuro) .

Dovrai farlo solo una volta. Il tuo script verrà eseguito e l'indirizzo e-mail che hai specificato nel foglio di lavoro riceverà un'e-mail come quella di seguito.

Usa Fogli Google per inviare un'e-mail in base al valore della cella

Passaggio 2: leggere un valore da una cella in Fogli Google

Ora che hai scritto correttamente uno script di Google Apps in grado di inviare un'email di avviso, è il momento di rendere l'email di avviso più funzionale.

Il passaggio successivo che imparerai è come leggere un valore di dati da un foglio di lavoro di Google, controllare il valore e inviare un messaggio a comparsa se tale valore è superiore o inferiore a un limite superiore.

Prima di poterlo fare, devi creare un altro foglio nel foglio di lavoro di Google con cui stai lavorando. Chiama questo nuovo foglio "MyReport".

Usa Fogli Google per inviare un'e-mail in base al valore della cella

Tieni presente che la cella D2 è quella che vorrai controllare e confrontare. Immagina di voler sapere ogni mese se le tue vendite totali sono scese al di sotto di $ 16.000.

Creiamo lo script di Google Apps che lo fa.

Torna nella finestra dell'editor di script facendo clic su Strumenti e quindi su Editor di script .

Se stai utilizzando lo stesso foglio di calcolo, avrai comunque la  funzione SendEmail() . Taglia quel codice e incollalo nel Blocco note. Ti servirà più tardi.

Incolla la seguente funzione nella finestra del codice.

function CheckSales() { // Fetch the monthly sales var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MyReport").getRange("D2"); var monthSales = monthSalesRange.getValue(); var ui = SpreadsheetApp.getUi(); // Check totals sales if (monthSales < 16000){="" ui.alert('sales="" too="" low!');="" }="">

Come funziona questo codice:

  • Carica il valore dalla cella D2 nella variabile monthSales .
  • L'istruzione IF confronta le vendite mensili nella cella D2 con $ 16.000
  • Se il valore è superiore a 16.000, il codice attiverà una finestra di messaggio del browser con un avviso.

Salva questo codice ed eseguilo. Se funziona correttamente, dovresti vedere il seguente messaggio di avviso nel tuo browser.

Usa Fogli Google per inviare un'e-mail in base al valore della cella

Ora che hai uno script di Google Apps in grado di inviare un avviso via email e un altro script in grado di confrontare un valore da un foglio di lavoro, sei pronto per combinare i due e inviare un avviso invece di attivare un messaggio di avviso.

Passaggio 3: mettere tutto insieme

Ora è il momento di combinare i due script che hai creato in un unico script.

A questo punto, dovresti avere un foglio di calcolo con una scheda chiamata Foglio1 che contiene il destinatario dell'e-mail di avviso. L'altra scheda chiamata MyReport contiene tutte le tue informazioni sulle vendite.

Di nuovo nell'editor di script, è il momento di mettere in pratica tutto ciò che hai imparato finora.

Sostituisci tutto il codice nell'editor di script con le tue due funzioni, modificate come mostrato qui.

function CheckSales() { // Fetch the monthly sales var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MyReport").getRange("D2"); var monthSales = monthSalesRange.getValue(); // Check totals sales if (monthSales < 16000){="" fetch="" the="" email="" address="" var="" emailrange="SpreadsheetApp.getActiveSpreadsheet().getSheetByName(" sheet1").getrange("b2");"="" var="" emailaddress="emailRange.getValues();" send="" alert="" email.="" var="" message='This month your sales were ' +="" monthsales;="" second="" column="" var="" subject='Low Sales Alert' ;="" mailapp.sendemail(emailaddress,="" subject,="" message);="" }="">

Nota le modifiche qui.

All'interno dell'istruzione IF, incolla lo script SendEmail all'interno della funzione CheckSales() all'interno delle parentesi dell'istruzione if.

In secondo luogo, concatena la variabile monthSales alla fine del messaggio di posta elettronica utilizzando il carattere + .

L'unica cosa che resta da fare è attivare la funzione CheckSales() ogni mese.

Per fare ciò, nell'editor di script:

  1. Fare clic sulla voce di menu Modifica , quindi fare clic su Attivatori del progetto corrente .
  2. Nella parte inferiore dello schermo, fai clic su crea un nuovo trigger .
  3. Selezionare la funzione CheckSales da eseguire.
  4. Modifica Seleziona l'origine dell'evento in .
  5. Modifica  Selezionare il tipo di trigger basato sul tempo su Timer mensile .

Fare clic su Salva per finalizzare il trigger.

Usa Fogli Google per inviare un'e-mail in base al valore della cella

Ogni mese, il tuo nuovo script verrà eseguito e confronterà l'importo totale delle vendite mensili nella cella D2 con $ 16.000.

Se è inferiore, invierà un'e-mail di avviso che ti informa delle vendite mensili basse.

Usa Fogli Google per inviare un'e-mail in base al valore della cella

Come puoi vedere, gli script di Google Apps racchiudono molte funzionalità in un piccolo pacchetto. Con poche semplici righe di codice, puoi fare cose davvero incredibili.

Se vuoi sperimentare ancora, prova ad aggiungere il limite di confronto di $ 16.000 in un'altra cella del foglio di calcolo, quindi leggilo nel tuo script prima di effettuare il confronto. In questo modo, puoi modificare il limite semplicemente modificando il valore nel foglio.

Modificando il codice e aggiungendo nuovi blocchi di codice, puoi basarti su queste semplici cose che impari per creare alla fine alcuni fantastici script di Google.

Automatizzazione del processo

Fin qui tutto bene, ma lo script sopra verrà eseguito manualmente solo se non impostiamo alcun trigger. Fortunatamente, Google ha reso l'automazione attivata semplice da configurare. Ecco i passaggi. 

Nell'editor di Apps Script, fai clic sull'icona Trigger sulla barra laterale sinistra (assomiglia a un piccolo orologio).

Fai clic sul collegamento crea nuovo triggerr o sul collegamento Aggiungi trigger pulsante nell'angolo in basso a destra della pagina Trigger.

Nel scegli quale funzione eseguire menu a discesa, seleziona invia email< una i=4> funzione.

Nel menu a discesa Seleziona origine evento , scegli basato sul tempo.

Nel Seleziona il tipo di attivazione basata sul tempo menu a discesa, scegli la frequenza desiderata (ad esempio, Timer giornaliero per le email giornaliere, Timer settimanale per le email settimanali, ecc.).

Se applicabile, scegli l'intervallo di tempo o il giorno della settimana desiderato.

Fai clic su Salva per creare l'attivatore.

Dopo aver salvato, fai clic sul pulsante Distribuisci nell'angolo in alto a destra e segui le istruzioni per etichettare e definire la distribuzione. Dovrai concedere le autorizzazioni di automazione per l'esecuzione e lo stesso vale per lo script stesso.  

Per quanto riguarda il trigger indicato, poiché il nostro esempio riguarda l'invio di solleciti di fatture, presupponiamo che questi siano mensili ed è opportuno inviarli ogni primo del mese tra le 13:00 e le 14:00. Ma ovviamente puoi modificare la frequenza e i tempi in base alle tue esigenze. 

Come inviare un'e-mail con un allegato

Per mostrarti come inviare e-mail con allegati, riutilizzeremo il foglio di esempio con i promemoria delle fatture ed effettueremo il refactoring dello snippet per includere gli allegati. Ora iniziamo con la funzione e il modello di email si trova più avanti nel codice. invia promemoria via e-mail

Vogliamo evidenziare che lo snippet di seguito estrae gli allegati email da una cartella di Google Drive, dove è fondamentale includere l'ID della cartella e seguire la convenzione di denominazione specificata. Maggiori informazioni nella sezione Analizziamo la sezione del codice

function sendEmailReminders() { // Ottieni il foglio attivo var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Ottiene l'intervallo di dati (esclusa la riga di intestazione) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Ottiene i valori dall'intervallo di dati var data = dataRange.getValues(); // Passa in rassegna le righe di dati for (var i = 0; i < data.length; i++) { var row = data[i]; // Ottiene i valori da ciascuna colonna var businessName = row[0]; var email = riga[1]; var numerofattura = riga[2]; var importofattura = riga[3]; var dueDate = riga[4]; var soggetto = riga[5]; // Corpo dell'e-mail var emailBody = "Gentile " + nomeazienda + ",\n\n" + "Questo è un promemoria che la fattura n." + Numerofattura + " per $quot; + Importo fattura + " è dovuto il " + datascadenza + ".\n" + "Trova la fattura allegata.\n\n" + "Grazie per la tempestiva attenzione prestata a questo argomento."; // Allega la fattura corrispondente: devi fornire l'ID corretto della cartella in cui sono archiviate le fatture var fatturaFolderId = 'YOUR_FOLDER_ID_HERE'; var billFolder = DriveApp.getFolderById(invoiceFolderId); varbillFiles =billFolder.getFilesByName(invoiceNumber + '.pdf'); // Supponendo che i file delle fatture siano in formato PDF var fatturaFile; if (fatturaFiles.hasNext()) { fatturaFile = fatturaFiles.next(); } else { // Se il file della fattura non viene trovato, puoi saltare questa riga o registrare un errore console.error("File della fattura non trovato per il numero fattura: " + numerofattura); Continua; } // Invia l'e-mail con l'allegato MailApp.sendEmail({ to: email, oggetto: soggetto, corpo: emailBody, allegati: [invoiceFile] }); } }

Analizziamo il codice

1. Definisci la funzione: invia promemoria via email

funzione inviaPromemoriaE-mail() {

La riga dichiara una funzione denominata , che conterrà il codice per inviare promemoria via email con allegati.sendEmailReminders

2. Ottieni il foglio attivo:

var foglio = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

La riga recupera il foglio attivo dal documento Fogli Google attualmente aperto.

3. Ottieni l'intervallo di dati (esclusa la riga di intestazione):

var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());

Questa riga ottiene l'intervallo di dati nel foglio, esclusa la riga di intestazione. Inizia dalla seconda riga (riga 2) e dalla prima colonna (colonna 1) e si estende fino all'ultima riga e all'ultima colonna del foglio.

Nota a margine: quando crei il tuo foglio personalizzato devi modificare il per adattarlo al tuo foglio. intervallo dati

4. Ottieni i valori dall'intervallo di dati:

var dati = dataRange.getValues();

Questa riga recupera i valori (contenuto) dall'intervallo di celle definito nel passaggio precedente.

5. Scorri le righe di dati:

for (var i = 0; i < data.length; i++) { var row = data[i];

Questo ciclo scorre ogni riga dell'array. La variabile rappresenta la riga di dati corrente in ogni iterazione.fordatarow

6. Ottieni i valori da ciascuna colonna:

var businessName = riga[0]; var email = riga[1]; var numerofattura = riga[2]; var importofattura = riga[3]; var dueDate = riga[4]; var soggetto = riga[5];

Le righe sopra estraggono i valori da ciascuna colonna nella riga di dati corrente. Ogni valore viene successivamente assegnato a una variabile per un facile riferimento nello script. I valori indicati sono personalizzati per il nostro foglio di esempio. 

7. Crea il corpo dell'e-mail:

var emailBody = "Gentile " + nomeazienda + ",\n\n" + "Questo è un promemoria che la fattura n." + Numerofattura + " per $quot; + Importo fattura + " è dovuto il " + datascadenza + ".\n" + "Trova la fattura allegata.\n\n" + "Grazie per la tempestiva attenzione prestata a questo argomento.";

Il codice costruisce il corpo dell'email utilizzando i valori estratti dal foglio. Il corpo dell'e-mail è una stringa che include il nome dell'azienda, il numero della fattura, l'importo della fattura e la data di scadenza.

8. Ottieni il file della fattura corrispondente:

var fatturaFolderId = 'LA TUA_CARTELLA_ID_QUI'; var billFolder = DriveApp.getFolderById(invoiceFolderId); varbillFiles =billFolder.getFilesByName(invoiceNumber + '.pdf'); var filefattura; if (fatturaFiles.hasNext()) { fatturaFile = fatturaFiles.next(); } else { console.error("File della fattura non trovato per il numero fattura: " + numerofattura); Continua; }

Queste righe recuperano il file della fattura associato alla riga corrente. 

Innanzitutto, si accede alla cartella del file della fattura utilizzando il relativo ID cartella. Assicurati di sostituirlo con l'ID cartella effettivo. LA TUA_FOLDER_ID_QUI

Tieni presente che la convenzione di denominazione nel nostro esempio è e la fattura effettiva è denominata "123456.pdf". Se i file allegati hanno un nome diverso, dovrai aggiornare la formattazione. (Numerofattura + '.pdf')

Successivamente, lo script cerca un file con lo stesso nome del numero di fattura (presupponendo che il file sia in formato PDF). 

Se il file viene trovato, viene assegnato alla variabile; in caso contrario, lo script registra un messaggio di errore e passa al file row.invoiceFile successivo

9. Invia l'e-mail con l'allegato:

MailApp.sendEmail({ a: email, oggetto: oggetto, corpo: emailBody, allegati: [invoiceFile] });

Questa riga invia il corpo e gli allegati e-mail ed ecco i risultati che dovresti ottenere. Inoltre, tutti i passaggi di automazione si applicano come descritto in precedenza ed è opportuno mantenere il trigger mensile poiché si tratta dell'invio di solleciti di fattura. 

Invia un'e-mail HTML con GSheets

Per inviare un'e-mail in formato HTML è possibile apportare alcune, piuttosto semplici, modifiche allo script precedentemente descritto. Ecco qui: 

function sendEmailReminders() { // Ottieni il foglio attivo var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Ottiene l'intervallo di dati (esclusa la riga di intestazione) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Ottiene i valori dall'intervallo di dati var data = dataRange.getValues(); // Passa in rassegna le righe di dati for (var i = 0; i < data.length; i++) { var row = data[i]; // Ottiene i valori da ciascuna colonna var businessName = row[0]; var email = riga[1]; var numerofattura = riga[2]; var importofattura = riga[3]; var dueDate = riga[4]; var soggetto = riga[5]; // Corpo email HTML var emailBodyHtml = "<p>Gentile " + businessName + ",</p>" + "<p>Ricordiamo che la fattura n." + Numerofattura + " per $quot; + Importo fattura + " è dovuto il " + datascadenza + ".</p>" + "<p>Trova la fattura allegata.</p>" + "<p>Grazie per la tempestiva attenzione prestata a questo argomento.</p>"; // Allega la fattura corrispondente: devi fornire l'ID corretto della cartella in cui sono archiviate le fatture var fatturaFolderId = 'YOUR_FOLDER_ID_HERE'; var billFolder = DriveApp.getFolderById(invoiceFolderId); varbillFiles =billFolder.getFilesByName(invoiceNumber + '.pdf'); // Supponendo che i file delle fatture siano in formato PDF var fatturaFile; if (fatturaFiles.hasNext()) { fatturaFile = fatturaFiles.next(); } else { // Se il file della fattura non viene trovato, puoi saltare questa riga o registrare un errore console.error("File della fattura non trovato per il numero fattura: " + numerofattura); Continua; } // Invia l'e-mail con l'allegato MailApp.sendEmail({ to: email, oggetto: soggetto, htmlBody: emailBodyHtml, allegati: [invoiceFile] }); } }

In questa versione, il testo normale viene sostituito con una variabile che contiene contenuti in formato HTML. emailBodyemailBodyHtml

Quando si chiama la funzione, anche la proprietà body viene sostituita con la proprietà, che invierà l'email come email HTML.MailApp.sendEmail()htmlBody

Note a margine: 

Utilizziamo invece nello script per comodità. Entrambe le opzioni funzionerebbero, anche se sicuramente sono più leggibili. In ogni caso, sentiti libero di riformattare lo script e sostituire l'operatore di concatenazione con segnaposto durante l'interpolazione delle stringhe. varconstconst${espressione}

Inoltre, nessuno degli script include funzioni poiché queste non erano necessarie per i nostri esempi. Ma ovviamente è anche possibile aggiungere e persino automatizzare questi tipi di script. bccbcc

Infine, puoi rendere le cose più interessanti aggiungendo stili CSS personalizzati, vedi la funzione aggiornata di seguito. var emailBodyHtml =

// Corpo dell'email in HTML con stili CSS var emailBodyHtml = "<html><head><style>" + "corpo {famiglia-font: Arial, sans-serif;}" + "p {dimensione carattere: 14px;}" + ".invoice-info {font-weight: bold; colore: #4a4a4a;}" + "</style></head><body>" + "<p>Gentile <span class='informazioni-fattura'>" + businessName + "</span>,</p>" + "<p>Si ricorda che Invoice #<span class='invoice-info'>" + numerofattura + "</span> per $<span class='invoice-info'>" + importofattura + "</span> è dovuto il <span class='invoice-info'>" + dueDate + "</span>.</p>" + "<p>Trova la fattura allegata.</p>" + "<p>Grazie per la tempestiva attenzione prestata a questo argomento.</p>" + "</body></html>";

Suggerimenti degli esperti: 

  • Vacci piano con, alcuni provider di caselle di posta potrebbero non supportare e visualizzare correttamente le email con stili elevati o non supportarle affatto. <stile>
  • Utilizza il test delle email di Mailtrap per vedere in che misura i provider di caselle di posta supportano le tue email HTML. 
  • Per sottolinearlo ancora, Se devi inviare un volume elevato, è sempre meglio utilizzare un MTA adeguato invece della funzione. inviae-mail
  • In questa nota, tieni presente le limitazioni del tuo account Gmail. Questi sono diversi per Google Workspace e/o per il tuo account privato. 

Come inviare email di attivazione da Fogli Google?

Quando una cella raggiunge un certo valore

Ti mostreremo come inviare un'e-mail automatica in base al valore di una cella. Nel nostro esempio, la fattura verrà inviata quando la cella Importo fattura raggiunge "0" indicando un cliente abbandonato. 

Il valore della cella specificato attiva un'e-mail di abbandono personalizzata per raggiungere immediatamente il cliente. E ancora una volta, i passaggi di automazione rimangono gli stessi, puoi comunque utilizzare il trigger mensile per queste e-mail. 

Tieni presente che lo script è lo stesso che abbiamo utilizzato per inviare email e allegati HTML. Ma ha un altro livello di funzionalità per introdurre la logica condizionale descritta. Ecco il codice. 

function sendEmailReminders() { // Ottieni il foglio attivo var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Ottiene l'intervallo di dati (esclusa la riga di intestazione) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Ottiene i valori dall'intervallo di dati var data = dataRange.getValues(); // Passa in rassegna le righe di dati for (var i = 0; i < data.length; i++) { var row = data[i]; // Ottiene i valori da ciascuna colonna var businessName = row[0]; var email = riga[1]; var numerofattura = riga[2]; var importofattura = riga[3]; var dueDate = riga[4]; var soggetto = riga[5]; // Determina il corpo dell'e-mail in base all'importo della fattura var emailBodyHtml; if (invoiceAmount == 0) { // Oggetto dell'e-mail del cliente di abbandono = "Notifica di abbandono del cliente"; emailBodyHtml = "<html><head><style>" + "corpo {famiglia-font: Arial, sans-serif;}" + "p {dimensione carattere: 14px;}" + ".invoice-info {font-weight: bold; colore: #4a4a4a;}" + "</style></head><body>" + "<p>Caro " + businessName + ",</p>" + "<p>Abbiamo notato che l'importo della tua fattura è $ 0. Siamo spiacenti di vederti andare via e apprezzeremmo qualsiasi feedback sul motivo per cui hai deciso di interrompere l'utilizzo dei nostri servizi.</p>" + "<p>Se c'è qualcosa che possiamo fare per migliorare i nostri servizi o riconquistare la vostra attività, fatecelo sapere.</p>" + "<p>Grazie per i tuoi affari passati.</p>" + "</body></html>"; } else { // Email di fatturazione regolare emailBodyHtml = "<html><head><style>" + "corpo {famiglia-font: Arial, sans-serif;}" + "p {dimensione carattere: 14px;}" + ".invoice-info {font-weight: bold; colore: #4a4a4a;}" + "</style></head><body>" + "<p>Gentile <span class='informazioni-fattura'>" + businessName + "</span>,</p>" + "<p>Si ricorda che Invoice #<span class='invoice-info'>" + numerofattura + "</span> per $<span class='invoice-info'>" + importofattura + "</span> è dovuto il <span class='invoice-info'>" + dueDate + "</span>.</p>" + "<p>Trova la fattura allegata.</p>" + "<p>Grazie per la tempestiva attenzione prestata a questo argomento.</p>" + "</body></html>"; } // Allega la fattura corrispondente: devi fornire l'ID corretto della cartella in cui sono archiviate le fatture var fatturaFolderId = 'YOUR_FOLDER_ID_HERE'; var billFolder = DriveApp.getFolderById(invoiceFolderId); varbillFiles =billFolder.getFilesByName(invoiceNumber + '.pdf'); // Supponendo che i file delle fatture siano in formato PDF var fatturaFile; if (fatturaFiles.hasNext()) { fatturaFile = fatturaFiles.Prossimo(); } else { // Se il file della fattura non viene trovato, puoi saltare questa riga o registrare un errore console.error("File della fattura non trovato per il numero fattura: " + numerofattura); Continua; } // Invia l'e-mail con l'allegato MailApp.sendEmail({ to: email, oggetto: soggetto, htmlBody: emailBodyHtml, allegati: [invoiceFile] }); } }

Fino alla rottura del codice 

Tieni presente che ci concentreremo solo su ciò che c'è nella funzione per evitare di ripetere ciò che è già stato descritto. emailBodyHtml

La parte aggiornata del codice determina il contenuto del corpo dell'email in base all'importo della fattura. Se l'importo della fattura è , si presuppone che si tratti di un cliente che ha abbandonato e viene utilizzato un modello di email diverso. Ecco una ripartizione del codice: "0"

var emailBodyHtml;

Dichiara una variabile denominata e memorizza il contenuto del corpo dell'email. E inizialmente è lasciato indefinito.emailBodyHtml

if (importofattura == 0) { ... }

L'istruzione verifica se l'importo della fattura è 0. In tal caso, verrà eseguito il codice all'interno delle parentesi graffe. Questo blocco contiene il modello di email del cliente di abbandono.if(`{}`)

oggetto = "Notifica di abbandono del cliente";

La riga imposta l'oggetto dell'email per i clienti in abbandono."Notifica del cliente in abbandono"

emailBodyHtml = "<html><head><style>" +...

 La riga imposta il valore della variabile sul modello di email del cliente di abbandono. Il modello è una stringa HTML con stili CSS definiti nella sezione. Il corpo dell'email contiene segnaposto per il nome dell'azienda e un messaggio al cliente.emailBodyHtml<head>

} altro { ... }

Il blocco viene eseguito quando l'importo della fattura non è 0. Imposta la variabile sul normale modello email di fattura. Il modello di email è una stringa HTML con stili CSS definiti nella sezione. Il corpo dell'e-mail contiene segnaposto per il nome dell'azienda, il numero della fattura, l'importo della fattura e la data di scadenza.elseemailBodyHtml<head>

Utilizzando questa logica condizionale, lo script invia un corpo dell'email diverso a seconda che l'importo della fattura sia (cliente in abbandono) o diverso da zero (fattura normale). 0

Quando il valore della cella cambia

Ora prenderemo lo stesso script utilizzato sopra e lo estenderemo per coprire un altro caso d'uso: un client esegue l'aggiornamento e l'account manager deve inviare un'e-mail di ringraziamento con una fattura. 

Per spiegarlo, l’idea è che ogni mese l’account manager abbia un nuovo Foglio (Foglio 2 nel nostro esempio) con le credenziali dei clienti. 

Il codice ora confronterà i due fogli e invierà un'e-mail automatica di ringraziamento, anziché la normale e-mail di fatturazione, ai clienti che hanno eseguito l'upgrade (il loro Importo fattura è più grande rispetto al precedente). 

Inoltre, non è necessario toccare l'e-mail di abbandono, poiché esiste la possibilità che qualcuno abbia deciso di smettere di utilizzare il nostro servizio immaginario. Ecco la sceneggiatura.

function sendEmailReminders() { var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); var dataRange1 = sheet1.getRange(2, 1, sheet1.getLastRow() - 1, sheet1.getLastColumn()); var dataRange2 = sheet2.getRange(2, 1, sheet2.getLastRow() - 1, sheet2.getLastColumn()); var dati1 = dataRange1.getValues(); var dati2 = dataRange2.getValues(); for (var i = 0; i < data1.length; i++) { var riga1 = data1[i]; var riga2 = dati2[i]; var businessName = riga1[0]; var email = riga1[1]; var numerofattura = riga1[2]; var BillAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(',', 39;.')); var BillAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.')); if (isNaN(invoiceAmount1) || isNaN(invoiceAmount2)) { console.error("Importi fattura non validi per l'azienda: " + businessName + ". BillAmount1: " +billAmount1 + ",billAmount2: " +billAmount2 ); Continua; } var dueDate = riga1[4]; var soggetto; var emailBodyHtml; if (invoiceAmount1 < fatturaAmount2) { console.log("Invio email 'Grazie per l'aggiornamento' a " + email + ". BillAmount1: " +billAmount1 + ",billAmount2: " + Importofattura2); oggetto = "Grazie per l'aggiornamento"; emailBodyHtml = "<html><body>" + "<p>Caro " + businessName + ",</p>" + "<p>Grazie per l'aggiornamento! Apprezziamo la tua attività e non vediamo l'ora di servirti.</p>" + "<p>Cordiali saluti,</p>" + "<p>La tua azienda</p>" + "</body></html>"; MailApp.sendEmail({ a: email, oggetto: oggetto, htmlBody: emailBodyHtml }); } else if (invoiceAmount1 == 0) { console.log("Invio email di 'avviso di abbandono del cliente' a " + email + ". BillAmount1: " +billAmount1); oggetto = "Notifica di abbandono del cliente"; emailBodyHtml = "<html><head><style>" + "corpo {famiglia-font: Arial, sans-serif;}" + "p {dimensione carattere: 14px;}" + ".invoice-info {font-weight: bold; colore: #4a4a4a;}" + "</style></head><body>" + "<p>Caro " + businessName + ",</p>" + "<p>Abbiamo notato che l'importo della tua fattura è $ 0. Siamo spiacenti di vederti andare via e apprezzeremmo qualsiasi feedback sul motivo per cui hai deciso di interrompere l'utilizzo dei nostri servizi.</p>" + "<p>Se c'è qualcosa che possiamo fare per migliorare i nostri servizi o riconquistare la vostra attività, fatecelo sapere.</p>" + "<p>Grazie per i tuoi affari passati.</p>" + "</body></html>"; MailApp.sendEmail({ a: email, oggetto: oggetto, htmlBody:emailBodyHtml}); } else { console.log("Invio email 'Promemoria fattura' a " + email + ". importofattura1: " + importofattura1 + ", importofattura2: " + importofattura2); oggetto = "Promemoria fattura"; emailBodyHtml = "<html><head><style>" + "corpo {famiglia-font: Arial, sans-serif;}" + "p {dimensione carattere: 14px;}" + ".invoice-info {font-weight: bold; colore: #4a4a4a;}" + "</style></head><body>" "<p>Gentile <span class='invoice-info'>" + businessName + "</span>,</p>" + "<p>Si ricorda che Invoice #<span class='invoice-info'>" + numerofattura + "</span> per $<span class='invoice-info'>" + importofattura1 + "</span> è dovuto il <span class='invoice-info'>" + dueDate + "</span>.</p>" + "<p>Trova la fattura allegata.</p>" + "<p>Grazie per la tempestiva attenzione prestata a questo argomento.</p>" + "</body></html>"; // Allega la fattura corrispondente: devi fornire l'ID corretto della cartella in cui sono archiviate le fatture var fatturaFolderId = 'YOUR_FOLDER_ID_HERE'; var billFolder = DriveApp.getFolderById(invoiceFolderId); varbillFiles =billFolder.getFilesByName(invoiceNumber + '.pdf'); // Supponendo che i file delle fatture siano in formato PDF var fatturaFile; if (fatturaFiles.hasNext()) { fatturaFile = fatturaFiles.next(); } else { // Se il file della fattura non viene trovato, puoi saltare questa riga o registrare un errore console.error("File della fattura non trovato per il numero fattura: " + numerofattura); Continua; } MailApp.sendEmail({ a: email, oggetto: oggetto, htmlBody: emailBodyHtml, allegati: [invoiceFile] }); } } }</p>" + "</body></html>"; // Allega la fattura corrispondente: devi fornire l'ID corretto della cartella in cui sono archiviate le fatture var fatturaFolderId = 'YOUR_FOLDER_ID_HERE'; var billFolder = DriveApp.getFolderById(invoiceFolderId); varbillFiles =billFolder.getFilesByName(invoiceNumber + '.pdf'); // Supponendo che i file delle fatture siano in formato PDF var fatturaFile; if (fatturaFiles.hasNext()) { fatturaFile = fatturaFiles.next(); } else { // Se il file della fattura non viene trovato, puoi saltare questa riga o registrare un errore console.error("File della fattura non trovato per il numero fattura: " + numerofattura); Continua; } MailApp.sendEmail({ a: email, oggetto: oggetto, htmlBody: emailBodyHtml, allegati: [invoiceFile] }); } } }</p>" + "</body></html>"; // Allega la fattura corrispondente: devi fornire l'ID corretto della cartella in cui sono archiviate le fatture var fatturaFolderId = 'YOUR_FOLDER_ID_HERE'; var billFolder = DriveApp.getFolderById(invoiceFolderId); varbillFiles =billFolder.getFilesByName(invoiceNumber + '.pdf'); // Supponendo che i file delle fatture siano in formato PDF var fatturaFile; if (fatturaFiles.hasNext()) { fatturaFile = fatturaFiles.next(); } else { // Se il file della fattura non viene trovato, puoi saltare questa riga o registrare un errore console.error("File della fattura non trovato per il numero fattura: " + numerofattura); Continua; } MailApp.sendEmail({ a: email, oggetto: oggetto, htmlBody: emailBodyHtml, allegati: [invoiceFile] }); } } }

Fino alla rottura del codice 

1. Lo script inizia ottenendo riferimenti sia a Foglio1 che a Foglio2.

var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");

2. Quindi recupera i dati da entrambi i fogli, iniziando dalla seconda riga per escludere le intestazioni.

var dataRange1 = sheet1.getRange(2, 1, sheet1.getLastRow() - 1, sheet1.getLastColumn()); var dataRange2 = sheet2.getRange(2, 1, sheet2.getLastRow() - 1, sheet2.getLastColumn()); var dati1 = dataRange1.getValues(); var dati2 = dataRange2.getValues();

3. Lo script ripete le righe in entrambi i fogli (presupponendo che il numero di righe sia lo stesso in entrambi i fogli). Confronta gli importi delle fatture del Foglio1 e del Foglio2 per ciascuna riga corrispondente.

for (var i = 0; i < data1.length; i++) { var riga1 = data1[i]; var riga2 = dati2[i]; // Ottieni gli importi delle fatture da entrambi i fogli var fatturaAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(' ,', '.')); var BillAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.'));

copia

4. Lo script controlla quindi le condizioni per l'invio di diversi tipi di e-mail in base al confronto degli importi delle fatture del Foglio1 e del Foglio2.

if (invoiceAmount1 <billAmount2) { // Invia "Grazie per l'aggiornamento" email } else if (invoiceAmount1 == 0) { // Invia "notifica di abbandono del cliente" email } else { // Invia "Promemoria fattura" e-mail }

copia

Il confronto chiave è , che controlla se l'importo della fattura nel Foglio1 è inferiore all'importo della fattura nel Foglio2 per la stessa riga (ovvero, lo stesso cliente). Se è vero, lo script presuppone che il cliente abbia eseguito l'upgrade e invia un'email. Altrimenti, verifica altre condizioni (abbandono o promemoria regolari delle fatture) e invia l'e-mail appropriata. Se (invoiceAmount1 <billAmount2)"Grazie per l'aggiornamento"

Quando un file di Fogli Google viene aggiornato

Ora vale la pena discutere di un caso d'uso leggermente diverso, in cui persone diverse dall'account manager hanno accesso al foglio di calcolo. 

Supponiamo che il nostro account manager abbia una giornata dedicata all'incontro con i clienti e alla risposta alle loro domande. I clienti hanno accesso a un foglio di calcolo in cui possono descrivere brevemente il problema e prenotare uno slot. 

Ok, ci sono modi molto migliori per gestire le prenotazioni e le richieste dei clienti. Ma ci atterremo a questo approccio per il bene del tutorial.

Passo 1

Per prima cosa dobbiamo creare una tabella. Come mostrato di seguito, il nostro è piuttosto semplice e contiene solo tre righe con Manager, Fascia oraria e Query.

Passo 2

Successivamente, sono necessari gli script di Google per attivare le e-mail ogni volta che qualcuno aggiorna il foglio con la propria query, prenotando così uno spazio. Ecco un esempio. 

//@OnlyCurrentDoc function processEdit(e) { MailApp.sendEmail({ to: "[email protected]" ;, oggetto: "Nuova prenotazione - fascia oraria cliente", corpo: "Un cliente ha una domanda per te." }); }

copia

Per aiutarti a capire cosa succede, è utile discutere le funzioni principali. 

  • //@OnlyCurrentDoc - questa annotazione segnala che desideri che lo script venga eseguito solo nel foglio Google specificato. La rimozione dell'annotazione ha abilitato lo script negli altri file. 
  • function processEdit () – un trigger (imposteremo nel passaggio successivo) esegue lo script con questa funzione. Semplicemente, la funzione imposta il processo per ricevere un'e-mail ogni volta che qualcuno aggiorna il foglio.
  • (e) – questa annotazione rappresenta l'oggetto con i dati sulle modifiche. Ha una proprietà range per segnalare che un intervallo, o una cella, è stato modificato. 
  • MailApp - un oggetto utilizzato dalla funzione per inoltrare l'e-mail. 

Prima di proseguire, puoi testare il foglio e il codice. Se stai utilizzando il foglio di esempio, compila semplicemente una delle celle sotto la colonna Query ed esegui lo script. L'e-mail dovrebbe arrivare immediatamente nella tua casella di posta, ma attenzione, lo script non è stato ancora automatizzato.

Passaggio 3

È ora di impostare e autorizzare un trigger per l'invio automatico di email. In Apps Script, fai clic sull'icona della sveglia nel menu laterale. Quindi, fai clic su "…crea un nuovo trigger". 

Nel popup di configurazione del trigger, seleziona i seguenti criteri.

  • processoModifica
  • Testa
  • Dal foglio di calcolo
  • In modifica

Nota: Va bene se mantieni le impostazioni di notifica degli errori impostate come predefinite, ma puoi modificare quello se necessario. Non influirà sul funzionamento generale del trigger o dello script. Questo può applicarsi a qualsiasi script di Google che potresti voler automatizzare. 

Fai clic su Salva, autorizza l'attivazione sul tuo account e lo vedrai nella sezione  Elenco dei trigger . Inoltre, assicurati di premere il pulsante Spiega per attivare il trigger. 

Ora puoi tornare al foglio, compilare un'altra cella nella colonna Query e verificare se hai ricevuto la notifica automatica. 

Nota a margine: puoi personalizzare il foglio in base alle tue preferenze, ma ciò significa che dovrai personalizzare anche lo script.

Tags: #HOW-TO

Zenzero 2.7.53.0

Zenzero 2.7.53.0

Ginger è un correttore ortografico e grammaticale gratuito.

Blocchi

Blocchi

Blocks è un gioco intellettuale rivolto agli studenti delle scuole elementari di terza elementare per esercitare le proprie capacità di rilevamento e vista ed è incluso dagli insegnanti nel programma di supporto all'insegnamento informatico.

Prezio 6.26

Prezio 6.26

Prezi è un'applicazione gratuita che ti consente di creare presentazioni digitali, sia online che offline.

Mathway

Mathway

Mathway è un'app molto utile che può aiutarti a risolvere tutti quei problemi di matematica che richiedono uno strumento più complesso della calcolatrice integrata nel tuo dispositivo.

Presentatore Adobe

Presentatore Adobe

Adobe Presenter è un software di e-Learning rilasciato da Adobe Systems disponibile sulla piattaforma Microsoft Windows come plug-in di Microsoft PowerPoint.

Tucano 2.3.0

Tucano 2.3.0

Toucan è una piattaforma tecnologica educativa. Ti consente di imparare una nuova lingua mentre navighi su siti Web comuni di tutti i giorni.

ENetViet 24.2

ENetViet 24.2

eNetViet è un'applicazione che aiuta a connettere i genitori con la scuola in cui studiano i loro figli in modo che possano comprendere chiaramente l'attuale situazione di apprendimento dei loro figli.

Duolingo

Duolingo

Duolingo - Impara le lingue gratis, o semplicemente Duolingo, è un programma educativo che ti permette di imparare e praticare molte lingue diverse.

Digitazione rapida

Digitazione rapida

RapidTyping è uno strumento di allenamento per la tastiera comodo e facile da usare che ti aiuterà a migliorare la velocità di digitazione e a ridurre gli errori di ortografia. Con lezioni organizzate per molti livelli diversi, RapidTyping ti insegnerà come digitare o migliorare le competenze esistenti.

MathType 7.4.10.53

MathType 7.4.10.53

MathType è un software di equazioni interattive dello sviluppatore Design Science (Dessci), che consente di creare e annotare notazioni matematiche per l'elaborazione di testi, presentazioni, eLearning, ecc. Questo editor viene utilizzato anche per creare documenti TeX, LaTeX e MathML.