【Google】GASを使って営業時間外のメールに自動返信する方法

グループ展で「終わり」をテーマに作品を作るために、仕事が終わったあと(営業時間外)のメールでのコミュニケーション方法を考えていましたが…

GメールにはGAS(Google Apps Script)というJavaScriptライクなコードを使って簡単な処理を自動化することが可能です。

コードなどに馴染みがないと少し難しい設定にはなりますが、こんなことも出来るんだ…と見ていただければと思います。

設定方法

以下普段使っているGメールにログインしている状態で

1. https://script.google.com/?hl=jaにアクセス

2. 画面左上の「+新しいプロジェクト」ボタンをクリック

3. Apps Scriptのコード記述画面が表示されたら以下のコードを赤枠にコピペ(元々記述されているコードは削除)

function ResponseMail() {
  const subject = '';
  const sendMailSubject = 'ご連絡ありがとうございます';
  const sendMailName = 'Mail O-clock';
  const sendMailBody = 'お世話になっております。ご連絡ありがとうございます。\n\n本日はお先に失礼させていただいており自動返信にて失礼いたします。\n正式なお返事は翌営業日にさせていただきます。\n\n今日一日もお忙しい日をお過ごしのことと思います。\nお身体を癒し、明日へのエネルギーを蓄える時間をお過ごしください。\n\n何かご不明点やご質問がございましたら、どうぞお気軽にお知らせください。\n何かお手伝いできることがあれば、明日、喜んでお手伝いさせていただきます。\n\nどうぞ良い夜をお過ごしください。\n\n引き続き、よろしくお願いいたします。';

  // 現在の日時を取得
  var currentDate = new Date();
  
  // タイムゾーンを設定(例: GMT+9 は日本時間)
  var timeZone = 'GMT+9';
  
  // 現在の時間を取得し、時刻が18時から9時の間であるか確認
  var currentHour = Utilities.formatDate(currentDate, timeZone, 'HH');
  
  if (currentHour >= 18 || currentHour < 9) {
    // 未読スレッド一覧を取得
    var unreadMailThreads = GmailApp.search("label:inbox is:unread");
  
    // 未読スレッド一覧をループ処理でスレッドを一つずつ取り出す
    unreadMailThreads.forEach(function(unreadMailThread) {
      // スレッドのメッセージの一つ目の件名を取得する
      var message = unreadMailThread.getMessages()[0];
      var mailSubject = message.getSubject();
  
      // 取得した件名に特定の文字列が入っていないか確認する
      if (mailSubject.indexOf(subject) != -1) {
        // 入っていた場合はメッセージの差出人のメールアドレスを取得する
        var mailFrom = message.getFrom(); 
  
        // 取得したメールアドレスへ返信メールを送信する
        MailApp.sendEmail({to: mailFrom, subject: sendMailSubject, name: sendMailName, body: sendMailBody});
  
        // 処理したスレッドを既読にする
        GmailApp.markThreadRead(unreadMailThread);
      }
    });
  }
}

コードの解説

2行目の「const subject」に文字列を入れると、その文字列を含む特定のメールのみに自動返信します。(空欄だと全ての新着メールが対象)

16行目の「currentHour >= 18 || currentHour < 9」が18時から翌9時を表しているので、適宜時間を変更出来ます。

3~5行目は自動返信メールの表示内容になります。

問題点と改善点

これはGAS自体の問題点ですが、一日に100通までしかメールが送れません。
100通を超える場合、処理できなくなる問題点があります。

現在掲載しているコード自体の問題…改善点としては、メールの見出しの文字列でフィルターをかけることは出来ますが、基本的には全ての新着メールが対象になります。
仕事用のメールとは言え、広告メールや、仕事には直接関係ない、返信も必要ないメールも受信することもあります。
それら全てに自動返信してしまうので、仕事関連の人だけに返信するように、メールアドレスを登録してフィルターする機能も必要になりそうです。

参考:https://developers.google.com/apps-script/guides/projects?hl=ja
https://techblog.hubbit.io/2020/10/05/google-app-store-response-mail/

関連記事

コメントを残す

*