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アカウント):1日あたり100人の受信者
- Google Apps(従来の)顧客:1日あたり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;
}
シートデータを使用してメールを送信する
与えられた - 払い戻しを要求した従業員のシートを持っています。
要件 - 払い戻しが処理されるときに従業員に電子メールを送信する必要があります
シートは次のようになります:
電子メールを送信する機能は次のとおりです。
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