google-apps-script
Google feuilles MailApp
Recherche…
Introduction
Ce service permet aux utilisateurs d'envoyer des e-mails avec un contrôle total sur le contenu de l'e-mail. Contrairement à GmailApp, le seul but de MailApp est d'envoyer des courriers électroniques. MailApp ne peut pas accéder à la boîte de réception Gmail d'un utilisateur.
Les modifications apportées aux scripts écrits à l'aide de GmailApp sont plus susceptibles de déclencher une demande de réautorisation d'un utilisateur que les scripts MailApp.
Un exemple de MailApp de base
MailApp est l'api de Google App Script qui peut être utilisé pour envoyer du courrier
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 est limitée aux quotas basés sur votre compte Google:
- Utilisateur consommateur (compte personnel Gmail): 100 destinataires / jour
- Client Google Apps (ancien client): 100 destinataires / jour
- GSuite (basic / Gov / Edu / Business): 1500 destinataires / jour
Vous pouvez vérifier votre quota d'email dans MailApp
function checkQuota() {
Logger.log(MailApp.getRemainingDailyQuota());
}
Accéder aux données de la feuille
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;
}
Vous pouvez également modifier la fonction ci-dessus pour obtenir une dynamique de plage de données à partir du contenu présent dans la feuille:
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;
}
Utiliser les données de feuille pour envoyer un courrier électronique
Compte tenu - Une feuille de renseignements sur les employés qui ont demandé un remboursement.
Besoin - Nous devrions envoyer un courriel à l'employé lorsque son remboursement est traité
Donc, la feuille est la suivante:
La fonction d'envoi d'un email est la suivante:
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);
}
}
}
Envoi de contenu HTML par courrier
Dans l'exemple ci-dessus, si nous voulons envoyer du contenu HTML en tant que message dans l'e-mail, créez un fichier HTML en allant dans Fichier -> Nouveau -> Fichier HTML
Maintenant, vous pouvez voir un fichier HTML en plus de votre fichier gs comme suit:
Maintenant, mettez à jour la méthode getMessage () de l'exemple ci-dessus comme suit:
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;
}
L'appel à l' API MailApp doit également être modifié
MailApp.sendEmail(recipientEmail, subject, message, {htmlBody : message});
Le code entier sera donc le suivant:
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);
}
}
}