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:

Nom | Adresse e-mail | Montant du remboursement | Le remboursement est-il traité | Email envoyé

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);
    }
  }
}

Email envoyé pour Ramesh est Oui

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:

entrer la description de l'image ici

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);
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow