以前の記事で、Power Automate Desktopを使ってOutlookからメールを送信する方法をご紹介しました。
しかし、Power Automate Desktopのスケジュール機能は有料のため、毎日一定時刻に送信する場合にはプレミアム登録が必要になります。
そこで今回は、Google Apps Script(GAS)を利用して、Googleスプレッドシートの期日が過ぎたら毎日指定時刻にGmailから自動でメールを送信する方法をご紹介します。GASは無料で利用できるため、手軽に業務の自動化が可能です。
GASとは?
GAS(Google Apps Script)は、Googleが提供するクラウドベースのJavaScriptプラットフォームです。これを使うことで、Googleの各種サービス(スプレッドシート、ドキュメント、フォーム、Gmailなど)と連携し、様々な自動化やカスタマイズが可能になります。
GASは基本的に無料で利用でき、Googleのアカウントさえあれば、誰でも簡単にアクセスできます。これにより、特別なサーバーや高額なツールを必要とせず、手軽に業務の自動化を進められるのも大きなメリットです。Power Automate Desktopのようにノーコードとはいきませんが、JavaScriptに基づいているため、プログラム初心者でも利用しやすくなっています。
Gmail自動送信の手順
以下の手順に従って、支払期日を過ぎた顧客にリマインダーメールを自動送信する仕組みを構築します。
① Googleドライブにアクセスし、スプレッドシートを作成
Googleドライブ にアクセスし、新規スプレッドシートを作成します。
② スプレッドシートにデータを入力
作成したスプレッドシートに以下のような項目を入力しておきます。
③ Apps Scriptを開く
「拡張機能」→「Apps Script」を開き、スクリプトエディタを表示します。
④ コードを入力
スクリプトエディタに以下のコードを入力します。
// 顧客情報を読み込んで、支払期日が過ぎた場合にリマインダーメールを送る
function sendReminderEmails() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getRange(2, 1, sheet.getLastRow() - 1, 6).getValues(); // 顧客情報を取得
var today = new Date(); // 今日の日付
Logger.log("今日の日付: " + today); // 今日の日付をログに表示
// すべての顧客に対してメールを送信
for (var i = 0; i < data.length; i++) {
var customerName = data[i][0] + "様"; // 顧客名
var date = data[i][1]; // 支払期日
// 支払期日が Date 型であれば、そのままフォーマット処理を行う
var dueDate = new Date(date); // dateが文字列でも新たにDateオブジェクトとして作成
Logger.log("支払期日: " + dueDate); // 支払期日をログに表示
// 支払期日が無効な場合、処理をスキップ
if (isNaN(dueDate)) {
Logger.log("支払期日が無効です: " + date);
continue; // 無効な場合は次の顧客に進む
}
var formattedDate = Utilities.formatDate(dueDate, Session.getScriptTimeZone(), "yyyy/MM/dd");
Logger.log("フォーマットされた支払期日: " + formattedDate);
var amount = data[i][2]; // 請求金額
var item = data[i][3]; // 項目
var notes = data[i][4]; // 備考
var email = data[i][5]; // メールアドレス
// メールアドレスが無効ならスキップ
if (!email || email.indexOf('@') === -1) {
Logger.log("無効なメールアドレス: " + email);
continue; // 無効な場合は次の顧客に進む
}
// 支払期日が過ぎていたらメールを送信
if (dueDate < today) {
var subject = "支払期日が過ぎました - 請求書のご確認";
var body = "お世話になっております。\n\n" +
"以下の内容でお支払いがまだのようです。ご確認の上、お支払いをお願い申し上げます。\n\n" +
"名前: " + customerName + "\n" +
"金額: " + amount + "\n" +
"支払期日: " + formattedDate + "\n" +
"項目: " + item + "\n" +
"備考: " + notes + "\n\n" +
"何かご不明点等がございましたら、ご連絡いただけますようお願いいたします。\n" +
"また、入れ違いに入金となりました場合は、重ねてご容赦いただけますようお願い申し上げます。\n" +
"どうぞよろしくお願いいたします。\n\n" +
"--------------------------------\n" +
"〇〇株式会社\n" +
"担当者名: [担当者名]\n" +
"電話番号: [電話番号]\n" +
"メールアドレス: [メールアドレス]\n" +
"--------------------------------";
// メール送信
try {
MailApp.sendEmail(email, subject, body);
Logger.log("メール送信完了: " + email); // ログに送信完了したメールアドレスを記録
} catch (e) {
Logger.log("メール送信エラー: " + e.message);
}
}
}
}
// 時間主導型トリガーを設定する関数
function createTimeDrivenTriggers() {
// 古いトリガーがあれば削除
var triggers = ScriptApp.getProjectTriggers();
for (var i = 0; i < triggers.length; i++) {
ScriptApp.deleteTrigger(triggers[i]); // すべての既存トリガーを削除
}
// 新しいトリガーを作成
ScriptApp.newTrigger('sendReminderEmails') // 実行したい関数名
.timeBased()
.everyDays(1) // 毎日
.atHour(11) // 午前11時
.create();
}
⑤ スクリプトを保存して実行
「ファイル」→「保存」をクリックし、「sendReminderEmails」関数を実行します。
⑥ 権限の確認と承認
初回実行時にGoogleアカウントの承認が求められるので、指示に従って権限を許可します。
⑦ トリガーの設定
「createTimeDrivenTriggers」関数を実行すると、スクリプトが毎日午前11時に自動で実行されるようになります。
⑧ メールが届くか確認
テストとして支払期日を過ぎたデータをスプレッドシートに入力し、メールが届くか確認します。
スクリプトからメール本文のカスタマイズをして利用してみてください。
毎日午前11時~午後12時の間に送信されるように設定してありますので、目的に合わせて適時修正ください。
まとめ
GASを使えば、GoogleスプレッドシートのデータをもとにGmailで自動的にリマインダーメールを送信できます。特に、無料で利用できる点や設定が比較的簡単な点がメリットです。
ぜひ試してみて、業務の効率化を進めてみてください!
▼ 役に立ったらブックマークお願いします!
![]() |
価格:1870円 |
![]() |
DX時代の経理部門の働き方改革のススメ(改訂増補版) [ 中尾篤史 ] 価格:2200円 |