Questo esempio è la prosecuzione di quanto già visto in [apps script] Inviare tramite Gmail un’email ad un elenco di contatti in Spreadsheet
Voglio apportare solo una piccola modifica al codice per inviare un allegato salvato su Google Drive a tutti i soggetti nella lista. Per i riferimenti di programmazione rimando alla pagina della guida ufficiale.
Per prelevare un file da Google Drive dobbiamo anzitutto ottenere il suo riferimento univoco. Per farlo ci sono diversi modi, nel mio esempio utilizzerò un file pdf come questo qua. Anzitutto lo carico su Drive e poi cliccandoci sopra col destro scelgo Anteprima.
Dal menu in alto a destra seleziono Apri in un’altra finestra.
A questo punto nella barra dell’indirizzo vedrò qualcosa come https://drive.google.com/file/d/1234567890abcdefghijklmnopqrstuvwxyz/view
Copio il codice alfanumerico che ho evidenziato in rosso, che è l’identificativo univoco per ciascun file. Una volta copiato vado a modificare il mio codice nel modo seguente.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
function InviaEmailAllaLista() { var foglio = SpreadsheetApp.getActiveSheet(); var indirizzi = foglio.getRange("A:A").getValues(); var oggetti = foglio.getRange("B:B").getValues(); var messaggi = foglio.getRange("C:C").getValues(); var riga = 1; while( true ) { if( indirizzi[riga] == "" ) { break; } var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz'); GmailApp.sendEmail(indirizzi[riga], oggetti[riga], messaggi[riga], { attachments: [file.getAs(MimeType.PDF)], name: 'File di prova' }); riga++; } Browser.msgBox("Tutte le email sono state inviate!"); } |
In particolare con la prima istruzione aggiunta prelevo il file da Drive, cosa che richiederà dei permessi aggiuntivi.
1 |
var file = DriveApp.getFileById('1234567890abcdefghijklmnopqrstuvwxyz'); |
Mentre con file.getAs(MimeType.PDF)
creo il blob del file in formato PDF.
Fatto questo il mio nuovo script invia un’email a ciascun membro della lista con allegato il suddetto file.
Ciao Petar, ho bisogno di effettuare un invio automatico una volta al mese di un foglio google che ho su drive sempre allo stesso indirizzo mail. Vorrei automatizzare l’invio in xslx. da quello che ho capito guardando il tuo codice per l’estensione del file dovrei modificare l’istruzione file.getAs(MimeType.PDF). Scusa l’ignoranza ma non so compilare. Quello che vorrei riuscire a capire è come posso modificare il tuo codice in modo che non vada a cercare l’indirizzo mail sul foglio ma utilizzi un unico indirizzo mail che scelgo io. per automatizzare lo script se non mi sbaglio è sufficiente impostare un attivatore.
Grazie per l’attenzione. Luca.
Ciao Luca, è sufficiente utilizzare
MimeType.MICROSOFT_EXCEL
per i file XLSX (altrimentiMimeType.MICROSOFT_EXCEL_LEGACY
per quelli antecedenti al 2008)