google-apps-script
Google invia MailApp
Ricerca…
introduzione
Questo servizio consente agli utenti di inviare e-mail con il controllo completo sul contenuto dell'e-mail. A differenza di GmailApp, l'unico scopo di MailApp è l'invio di e-mail. MailApp non può accedere alla posta in arrivo di Gmail di un utente.
Le modifiche agli script scritti usando GmailApp hanno più probabilità di innescare una richiesta di autorizzazione da un utente rispetto agli script MailApp.
Un esempio base di MailApp
MailApp è l'API di Google App Script che può essere utilizzata per inviare posta
function sendEmails() {
var subject = "A subject for your new app!";
var message = "And this is the very first message"
var recipientEmail = "[email protected]";
MailApp.sendEmail(recipientEmail, subject, message);
}
La classe MailApp è limitata alle quote basate sul tuo account Google:
- Utente consumatore (ad esempio, account Gmail personale): 100 destinatari / giorno
- Cliente di Google Apps (legacy): 100 destinatari / giorno
- GSuite (base / Gov / Edu / Business): 1500 destinatari / giorno
Puoi controllare la tua quota di posta elettronica all'interno di MailApp
function checkQuota() {
Logger.log(MailApp.getRemainingDailyQuota());
}
Accedi ai dati dal foglio
function getSheetData() {
var sheet = SpreadsheetApp.getActiveSheet();
var startRow = 2; // First row of data to process
var numRows = 100; // Number of rows to process
var startCol = 1; //First column of data to process
var numCols = 15; // Number of columns to process
var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
return data;
}
Puoi anche modificare la funzione di cui sopra come segue per ottenere un intervallo di dati dinamico dal contenuto presente nel foglio:
function getDataSheet() {
sheet = SpreadsheetApp.getActiveSheet();
//Get data range based on content
var dataRange = sheet.getDataRange();
// Fetch values for each row in the Range.
var data = dataRange.getValues();
return data;
}
Usa i dati del Foglio per inviare email
Dato - A hanno foglio di dipendenti che hanno richiesto il rimborso.
Requisito - Dovremmo inviare una email al dipendente quando viene elaborato il rimborso
Quindi, il foglio è il seguente:
La funzione per l'invio di una e-mail è la seguente:
function getDataSheet() {
sheet = SpreadsheetApp.getActiveSheet();
startRow = 2; // First row of data to process
numRows = 100; // Number of rows to process
startCol = 1; //First column of data to process
numCols = 15; // Number of columns to process
var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
return data;
}
function getMessage(name, amount) {
return "Hello " + name + ", Your reimbursement for amount " + amount + " is processed successfully";
}
function sendEmail() {
var emailSent = "Yes";
var reimbursed = "Yes";
var emailCol = 5;
var data = getDataSheet();
for (var i = 0; i < data.length; i++) {
var row = data[i];
var isReimbursed = row[3];
var isEmailSent = row[4];
var name = row[0];
var amount = row[2];
if(isReimbursed == reimbursed && isEmailSent != emailSent) {
var subject = "Reimbursement details";
var message = getMessage(name, amount);
var recipientEmail = row[1];
MailApp.sendEmail(recipientEmail, subject, message);
//Sheet range starts from index 1 and data range starts from index 0
sheet.getRange(1 + i, emailCol).setValue(emailSent);
}
}
}
Invio di contenuto HTML nella posta
Nell'esempio precedente, se vogliamo inviare il contenuto HTML come messaggio nell'e-mail, quindi creare un file HTML andando su File -> Nuovo -> File HTML
Ora puoi vedere un file HTML oltre al tuo file gs come segue:
Ora, aggiorna il metodo getMessage () dall'esempio precedente come segue:
function getMessage(name, amount) {
var htmlOutput = HtmlService.createHtmlOutputFromFile('Message'); // Message is the name of the HTML file
var message = htmlOutput.getContent()
message = message.replace("%name", name);
message = message.replace("%amount", amount);
return message;
}
Anche la chiamata a MailApp api deve essere modificata
MailApp.sendEmail(recipientEmail, subject, message, {htmlBody : message});
Quindi l'intero codice sarà il seguente:
function getDataSheet() {
sheet = SpreadsheetApp.getActiveSheet();
startRow = 2; // First row of data to process
numRows = 100; // Number of rows to process
startCol = 1; //First column of data to process
numCols = 15; // Number of columns to process
var dataRange = sheet.getRange(startRow, startCol, numRows, numCols);
// Fetch values for each row in the Range.
var data = dataRange.getValues();
return data;
}
function getMessage(name, amount) {
var htmlOutput = HtmlService.createHtmlOutputFromFile('Message');
var message = htmlOutput.getContent()
message = message.replace("%name", name);
message = message.replace("%amount", amount);
return message;
}
function sendEmail() {
var emailSent = "Yes";
var reimbursed = "Yes";
var emailCol = 5;
var data = getDataSheet();
for (var i = 0; i < data.length; i++) {
var row = data[i];
var isReimbursed = row[3];
var isEmailSent = row[4];
var name = row[0];
var amount = row[2];
if(isReimbursed == reimbursed && isEmailSent != emailSent) {
var subject = "Reimbursement details";
var message = getMessage(name, amount);
var recipientEmail = row[1];
MailApp.sendEmail(recipientEmail, subject, message, {htmlBody : message});
sheet.getRange(startRow + i, emailCol).setValue(emailSent);
}
}
}