GAS とGoogle スプレッドシートの利用でGmail を指定した日時に送付する方法

/ サイト運営者

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

では、なぜGASとGoogle スプレッドシートを利用してGmailの予約投稿をするのでしょうか?

こちらの記事を検索経由で来られた方は、ご存じだと思います。単純にGmailで予約投稿を複数回セットするのが面倒くさいからです。笑

同じメールを複数人に送付するのは、Bccを利用したら良いと思う方もいるかもしれないですが、セキュリティの観点から禁止されている会社があったり、Bccが多すぎると、サーバーの制御で大量送信できない場合があるなどのトラブルがあります。

そのような背景から、筆者もGASを使ってGmail を指定した日時に送付する方法を備忘録として残しておきます。

GASとGoogle スプレッドシートでGmail を指定日時に送付する手順

以下が、手順となります。

  1. Google スプレッドシートを開く
  2. Google Apps Script(GAS)を開く
  3. 以下に記載するコードを反映する
  4. Google Apps Script(GAS)の画面で、「トリガーの」設定をする
  5. Gmailの送信権限を与える
  6. スプレッドシートの一列目を記載する。

以下の見出しでそれぞれ詳しく解説します。

Google スプレッドシートを開く

以下のリンクをクリックするとスプレッドシートの画面に飛びます。

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 スプレッドシートの一列目を記載する。

email 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 を指定した日時に送付する方法」へのコメント

コメントはありません

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

You cannot copy content of this page

error: Content is protected !!