Suche…


Einführung

Mit diesem Dienst können Benutzer E-Mails mit vollständiger Kontrolle über den Inhalt der E-Mail senden. Im Gegensatz zu GmailApp dient MailApp ausschließlich zum Versenden von E-Mails. MailApp kann nicht auf den Google Mail-Posteingang eines Benutzers zugreifen.

Mit Google MailApp geschriebene Änderungen an Skripts lösen bei einem Benutzer mit größerer Wahrscheinlichkeit eine erneute Autorisierung aus als bei MailApp-Skripts.

Ein einfaches MailApp-Beispiel

MailApp ist die API von Google App Script, die zum Senden von E-Mails verwendet werden kann

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

Die MailApp-Klasse ist auf Kontingente beschränkt, die auf Ihrem Google-Konto basieren:

  • Verbraucher (z. B. persönliches Google Mail-Konto): 100 Empfänger / Tag
  • Kunde von Google Apps (Legacy): 100 Empfänger / Tag
  • GSuite (basic / Gov / Edu / Business): 1500 Empfänger / Tag

Sie können Ihr E-Mail-Kontingent in MailApp

function checkQuota() {
  Logger.log(MailApp.getRemainingDailyQuota());
}

Auf Daten aus dem Blatt zugreifen

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

Sie können die obige Funktion auch wie folgt ändern, um den dynamischen Datenbereich aus dem Inhalt der Tabelle zu erhalten:

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

Verwenden Sie Blattdaten, um E-Mails zu senden

Gegeben - A haben ein Blatt von Mitarbeitern, die eine Erstattung beantragt haben.

Anforderung - Wir sollten eine E-Mail an den Mitarbeiter senden, wenn die Erstattung bearbeitet wird

Das Blatt ist also wie folgt:

Name | E-Mail-Adresse | Erstattungsbetrag | Wird die Erstattung bearbeitet | E-Mail gesendet

Die Funktion zum Versenden einer E-Mail lautet wie folgt:

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

E-Mail für Ramesh gesendet ist Ja

Senden von HTML-Inhalten per E-Mail

Wenn Sie im obigen Beispiel HTML-Inhalt als Nachricht in der E-Mail versenden möchten, erstellen Sie eine HTML-Datei, indem Sie auf Datei -> Neu -> HTML-Datei gehen

Jetzt können Sie eine HTML-Datei neben Ihrer GS-Datei wie folgt anzeigen:

Geben Sie hier die Bildbeschreibung ein

Aktualisieren Sie nun die getMessage () -Methode aus dem obigen Beispiel wie folgt:

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

Der Aufruf an MailApp api muss ebenfalls geändert werden

MailApp.sendEmail(recipientEmail, subject, message, {htmlBody : message});

Der ganze Code wird also wie folgt aussehen:

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow