수색…


소개

이 서비스를 통해 사용자는 전자 메일의 내용을 완벽하게 제어 할 수있는 전자 메일을 보낼 수 있습니다. GmailApp과 달리 MailApp의 유일한 목적은 전자 메일을 보내는 것입니다. MailApp은 사용자의 Gmail받은 편지함에 액세스 할 수 없습니다.

GmailApp을 사용하여 작성된 스크립트를 변경하면 MailApp 스크립트보다 사용자의 재 인증 요청이 더 많이 발생합니다.

기본적인 MailApp 예제

MailApp는 Google App Script의 api로 메일을 보내는 데 사용할 수 있습니다.

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

MailApp 클래스는 Google 계정을 기반으로 한 할당량 으로 제한됩니다.

  • 일반 사용자 (예 : 개인 Gmail 계정) : 100 명 / 일
  • Google Apps (기존) 고객 : 100 명 / 일
  • GSuite (기본 / Gov / Edu / Business) : 1500 명 / 일

MailApp 내에서 이메일 할당량을 확인할 수 있습니다.

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

시트에서 데이터 액세스

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

위의 함수를 다음과 같이 수정하여 시트에있는 내용에서 동적으로 데이터 범위를 얻을 수도 있습니다.

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

시트 데이터를 사용하여 이메일 보내기

감안할 때 - A 급여를 요청한 직원이 있습니다.

요구 사항 - 환급이 처리 될 때 직원에게 이메일을 보내야합니다.

시트는 다음과 같습니다.

이름 | 이메일 주소 | 상환 금액 | 상환이 처리 되는가 | 이메일이 전송되었습니다.

전자 메일을 보내는 기능은 다음과 같습니다.

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

Ramesh에게 보낸 이메일은 예입니다.

메일에서 HTML 콘텐츠 보내기

위의 예에서 HTML 콘텐츠를 이메일의 메시지로 보내려면 파일 -> 새로 만들기 -> HTML 파일 로 이동하여 HTML 파일을 만듭니다.

이제 gs 파일 외에도 다음과 같은 HTML 파일을 볼 수 있습니다.

여기에 이미지 설명을 입력하십시오.

이제 위의 예제에서 getMessage () 메서드를 다음과 같이 업데이트하십시오.

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

MailApp API에 대한 호출도 변경해야합니다.

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

따라서 전체 코드는 다음과 같습니다.

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
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow