GAS Array.push()で実現!定期実行によるメール送信自動化
本記事では、Google Apps Script(GAS)のArray.push()
メソッドを活用して、定期実行によるメール送信を自動化する方法を解説します。タスク管理、進捗報告、リマインダー送信など、日々の業務で発生するメール送信作業を効率化し、時間を有効活用しましょう。
Array.push()の基本:GASにおける配列操作
Array.push()
は、配列の末尾に要素を追加するJavaScriptの標準的なメソッドです。GASにおいても同様に使用でき、配列にデータを動的に追加する際に非常に役立ちます。
構文:array.push(element1, element2, ..., elementN)
array
: 要素を追加する配列。element1, element2, ..., elementN
: 配列に追加する1つ以上の要素。
// 例:配列に要素を追加する
let myArray = ["apple", "banana"];
myArray.push("orange");
console.log(myArray); // 出力:["apple", "banana", "orange"]
GAS×Array.push()×定期実行メール送信:業務効率化の鍵
定期的にメールを送信する処理を自動化する際、Array.push()
は複数の宛先、件名、本文などを動的に生成し、配列に格納するのに役立ちます。例えば、スプレッドシートからデータを読み込み、特定の条件を満たす場合にメール送信リストに追加する、といった処理が可能です。
実装例1:タスクのリマインダーメールを自動送信
スプレッドシートに記載されたタスク情報を読み込み、期日が迫っているタスクの担当者にリマインダーメールを送信するスクリプトです。
function sendReminderEmails() {
// スプレッドシートのIDとシート名
const spreadsheetId = "YOUR_SPREADSHEET_ID";
const sheetName = "Tasks";
// シートを取得
const sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName(sheetName);
// データの範囲を取得(ヘッダー行を除く)
const dataRange = sheet.getDataRange();
const values = dataRange.getValues().slice(1);
// メール送信リストを格納する配列
let emailList = [];
// 現在の日付を取得
const today = new Date();
// 各タスクについて処理
values.forEach(row => {
const taskName = row[0]; // タスク名
const dueDate = new Date(row[1]); // 期日
const assigneeEmail = row[2]; // 担当者メールアドレス
const status = row[3]; // ステータス
// 期日が迫っていて、未完了のタスクのみ処理
const timeDiff = dueDate.getTime() - today.getTime();
const dayDiff = Math.ceil(timeDiff / (1000 * 3600 * 24));
if (dayDiff <= 3 && status != "完了") {
// メール送信情報をemailListに追加
emailList.push({
email: assigneeEmail,
subject: "【タスクリマインダー】" + taskName,
body: `${taskName}の期日が${dueDate.toLocaleDateString()}に迫っています。`
});
}
});
// メール送信
emailList.forEach(item => {
MailApp.sendEmail(item.email, item.subject, item.body);
});
}
ポイント:
- スプレッドシートからタスク情報を読み込みます。
- 期日とステータスをチェックし、リマインダーが必要なタスクを抽出します。
Array.push()
を使って、メール送信に必要な情報をオブジェクトとしてemailList
配列に追加します。emailList
配列をループ処理し、メールを送信します。
実装例2:日報メールの自動送信
毎日決まった時間に、従業員に日報提出を促すメールを自動送信するスクリプトです。
function sendDailyReportReminders() {
// 従業員リスト(メールアドレス)
const employeeEmails = ["employee1@example.com", "employee2@example.com", "employee3@example.com"];
// メール送信リストを格納する配列
let emailList = [];
// 各従業員にメールを送信
employeeEmails.forEach(email => {
// メール送信情報をemailListに追加
emailList.push({
email: email,
subject: "【日報提出のお願い】",
body: "本日もお疲れ様でした。日報の提出をお願いします。"
});
});
// メール送信
emailList.forEach(item => {
MailApp.sendEmail(item.email, item.subject, item.body);
});
}
ポイント:
- 従業員のメールアドレスを配列として定義します。
Array.push()
を使って、メール送信に必要な情報をオブジェクトとしてemailList
配列に追加します。emailList
配列をループ処理し、メールを送信します。
よくある問題とトラブルシューティング
- メールが送信されない:GASの実行権限、メール送信制限、スプレッドシートIDの誤りなどを確認してください。
- 日付の比較がうまくいかない:日付の書式設定、タイムゾーンなどを確認してください。
- スプレッドシートのデータが正しく読み込まれない:シート名、データ範囲などを確認してください。
カスタマイズ方法と応用例
- メールの送信間隔、送信条件などをカスタマイズできます。
- スプレッドシート以外のデータソース(Google Calendar, Google Formsなど)と連携できます。
- エラー処理を追加し、より堅牢なスクリプトにできます。
まとめ
GASのArray.push()
メソッドと定期実行を組み合わせることで、メール送信を自動化し、業務効率を大幅に向上させることができます。本記事で紹介したコード例を参考に、ぜひご自身の業務に合わせてカスタマイズしてみてください。