Szukaj…


Wprowadzenie

Ta usługa umożliwia użytkownikom wysyłanie wiadomości e-mail z pełną kontrolą nad treścią wiadomości e-mail. W przeciwieństwie do GmailApp, jedynym celem MailApp jest wysyłanie wiadomości e-mail. MailApp nie może uzyskać dostępu do skrzynki odbiorczej Gmaila użytkownika.

Zmiany w skryptach napisanych przy użyciu GmailApp częściej wyzwalają żądanie ponownej autoryzacji od użytkownika niż skrypty MailApp.

Podstawowy przykład MailApp

MailApp to interfejs API Google App Script, którego można używać do wysyłania poczty

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

Klasa MailApp jest ograniczona do kwot opartych na Twoim koncie Google:

  • Użytkownik będący konsumentem (tj. Osobiste konto Gmail): 100 odbiorców dziennie
  • Klient Google Apps (starszy): 100 odbiorców dziennie
  • GSuite (podstawowy / Gov / Edu / Business): 1500 odbiorców / dzień

Możesz sprawdzić limit e-mail w MailApp

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

Dostęp do danych z arkusza

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

Możesz również zmodyfikować powyższą funkcję w następujący sposób, aby uzyskać dynamiczny zakres danych z treści zawartej w arkuszu:

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

Użyj danych arkusza, aby wysłać wiadomość e-mail

Biorąc pod uwagę - mieć arkusz pracowników, którzy złożyli wniosek o zwrot kosztów.

Wymagania - powinniśmy wysłać pracownikowi wiadomość e-mail, gdy nastąpi przetworzenie jego zwrotu

Tak więc arkusz wygląda następująco:

Imię | Adres e-mail | Kwota zwrotu | Przetwarzany jest zwrot pieniędzy E-mail wysłany

Funkcja wysyłania wiadomości e-mail jest następująca:

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

Wiadomość e-mail wysłana do Ramesh to Tak

Wysyłanie treści HTML pocztą

W powyższym przykładzie, jeśli chcemy wysłać treść HTML jako wiadomość w wiadomości e-mail, utwórz plik HTML, przechodząc do opcji Plik -> Nowy -> Plik HTML

Teraz możesz zobaczyć plik HTML oprócz pliku gs w następujący sposób:

wprowadź opis zdjęcia tutaj

Teraz zaktualizuj metodę getMessage () z powyższego przykładu w następujący sposób:

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

Należy również zmienić wywołanie interfejsu API MailApp

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

Cały kod będzie więc wyglądał następująco:

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow