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:

Nome | Indirizzo email Importo del rimborso | Il rimborso è elaborato | Email inviata

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

L'email inviata per Ramesh è Sì

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:

inserisci la descrizione dell'immagine qui

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


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow