google-apps-script
Google 시트 MailApp
수색…
소개
이 서비스를 통해 사용자는 전자 메일의 내용을 완벽하게 제어 할 수있는 전자 메일을 보낼 수 있습니다. 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);
}
}
}
메일에서 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