Gmailでも日時指定をした投稿は可能です。

では、なぜGASとGoogle スプレッドシートを利用してGmailの予約投稿をするのでしょうか?
こちらの記事を検索経由で来られた方は、ご存じだと思います。単純にGmailで予約投稿を複数回セットするのが面倒くさいからです。笑
同じメールを複数人に送付するのは、Bccを利用したら良いと思う方もいるかもしれないですが、セキュリティの観点から禁止されている会社があったり、Bccが多すぎると、サーバーの制御で大量送信できない場合があるなどのトラブルがあります。
そのような背景から、筆者もGASを使ってGmail を指定した日時に送付する方法を備忘録として残しておきます。
GASとGoogle スプレッドシートでGmail を指定日時に送付する手順
以下が、手順となります。
- Google スプレッドシートを開く
- Google Apps Script(GAS)を開く
- 以下に記載するコードを反映する
- Google Apps Script(GAS)の画面で、「トリガーの」設定をする
- Gmailの送信権限を与える
- スプレッドシートの一列目を記載する。
以下の見出しでそれぞれ詳しく解説します。
Google スプレッドシートを開く
以下のリンクをクリックするとスプレッドシートの画面に飛びます。
Googleアカウントにログインするように求められますので、ログインしてください。
Googleアカウントをお持ちでない場合は、取得してから以下の手順に進んでください。
Google Apps Script(GAS)を開く

スプレッドシート
>拡張機能
>>Apps Script
をクリックして、スクリプトエディタを開きます。
コードを反映する
以下に記載のソースコードをApps Scriptのスクリプトエディタに貼り付けてください。

function sendScheduledEmails() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var rows = sheet.getDataRange().getValues();
for (var i = 1; i < rows.length; i++) { // i=0 はヘッダー行なのでスキップ var email = rows[i][0]; var subject = rows[i][1]; var body = rows[i][2]; var sendTime = new Date(rows[i][3]); var sentTime = rows[i][4]; var currentTime = new Date(); // 送付希望日時が現在の時間より前で、まだ送信されていないメールを探す if (currentTime >= sendTime && !sentTime) {
MailApp.sendEmail(email, subject, body);
sheet.getRange(i + 1, 5).setValue(currentTime); // sent_timeのカラムに実際の送信時間を記載
}
}
}
Google Apps Script(GAS)の画面で、「トリガーの」設定をする

GASエディタの左側にある「時計」のアイコン(トリガー)をクリックします。
画面下部の「+ トリガーを追加」をクリックします。

実行する関数を sendScheduledEmails に設定します。イベントソースを「時間主導型」に設定します。
どのくらいの頻度でスクリプトを実行したいかに応じて、例えば「分毎」や「時間毎」を選択し、具体的な時間を指定します。もし細かい時間設定が必要な場合は「分毎」を選び、5分や10分ごとの実行を設定できます。
添付の画像では、「分ベースのタイマー」となっておりますが、予約投稿する内容に応じて「日ベースのタイマー」、「時間ベースのタイマー」などにしてください。
設定が完了したら、「保存」をクリックしてください。
Gmailの送信権限を与える
スクリプトが最初にメールを送信しようとすると、Gmailの送信権限を要求される可能性があります。この場合は、権限を与えてください。
Google スプレッドシートの一列目を記載する。
| subject | body | sendTime | sentTime | |
| 送付したい相手のメールアドレスを記載 | メールの件名 | メールの本文の記載 | 2023/01/01 12:00
(配信したい日時を記載) |
空欄にする(メールが送信されたら自動で配信日が記載される。) |
こんな感じです。

以上で、指定した時間にメールを送信するGASの設定は完了です。スプレッドシートに情報を記入すると、指定された時刻にメールが送信され、その後「sent_time」カラムに実際の送信時間が記録されます。
GASのエラーが発生した時の対処方法や注意点
上記の手順に従って、スクリプトとトリガーの設定を完了した場合、基本的な動作は行えるはずですが、実際の運用やエラー対応などを考慮すると、以下のような追加のステップや注意点が考えられます。
エラーハンドリング
スクリプトの実行中にエラーが発生した場合のハンドリングを考慮すると良いでしょう。try-catch 文を使ってエラーをキャッチし、エラー発生時の対応を行うことができます。
メール送信の制限
Google Apps Scriptには無料の利用枠があり、一日あたりに送信できるメールの数に制限があります。これを超えると、その日の残りの時間はメールを送信できなくなります。この点を注意してください。
ロギング
スクリプトの実行ログを残しておくことで、後で何が起こったのかを確認することができます。Logger.log() を使用して、エラーやその他の重要な情報をログに残すことを検討してください。
スクリプトのトリガーの頻度
トリガーの頻度を高く設定すると、希望の送付日時に近いタイミングでメールが送信されますが、同時にスクリプトの実行回数も増えるので注意が必要です。
スプレッドシートのアクセス制限
スプレッドシートにはメールアドレスやその他の情報が含まれるため、不要な共有設定をしてしまわないように注意してください。
テスト
実際にいくつかのテストデータを用意して、スクリプトが期待通りに動作するかを確認してください。
まとめ
初めてGASを使用された方でも簡単に、Gmail で指定日時にメール送付する、Goolgeスプレッドシートの作成ができたのではないでしょうか?
Goolgeスプレッドシートには個人情報なども含まれることもありますので、取り扱いにはご注意してください。
最後におすすめのPC関連ガジェットを紹介して本記事は終了したいと思います。

MOFT 非粘着式 ノートPCスタンド ノートパソコンスタンド
PCは長時間使用すると熱を帯びます。その熱を逃すことができる最適な構造になっており、かつ軽量なので、持ち運びも便利です。以前は粘着式のものしか見つけられなかったですが、非粘着式のモデルが登場したので、これは個人的におすすめです。
「GAS とGoogle スプレッドシートの利用でGmail を指定した日時に送付する方法」へのコメント
コメントはありません