ヘッダーロゴ

【即戦力】GASでアラートメールを作成して期日になったら自動通知

GASで期日になったら自動でアラートメールを周知するスクリプトを共有します。

すぐにコードを見る↓

use-image

mail-image

特に1つのシートでタスク進捗を共有・管理している場合、複数人に同じアラートを送信できるようにしておくと何かと便利です。

関連:スプレッドシートで期日になったらセルの色を変更する

GASでアラートメールを作成して期日をお知らせするコード

スプシの期日でアラートメール運用イメージ

運用のイメージは、冒頭画像のシートイメージです。

use-image

No タイトル 担当 タスク内容 納期・期日 進捗
1 テスト1 アルル ファイヤー 2020/12/16
2 テスト2 アミティ アイスストーム 2020/12/16
3 テスト3 りんご ダイヤキュート 2020/12/18
4 テスト4 ウィッチ ブラインダムド 2020/12/18
5 テスト5 ルルー ジュゲム 2020/12/21

 

チェックしたら行の色を変える方法もありますので参考まで↓

参考|スプレッドシート・プルダウンで背景色を設定する方法。これは簡単ベンリ!

GAS・期日アラートメールのコード

GASのアラートメール内容は以下のとおり。

function mailalert() {

 var ss,sh,start,last,today,formatDate,ss_url

   ss = SpreadsheetApp.getActiveSpreadsheet();
   sh = ss.getActiveSheet();
   ss_url = ss.getUrl();

   start = 3;
   last = sh.getLastRow();
   today = new Date();
   formatDate = Utilities.formatDate(new Date(),"JST","yyyy/MM/dd");

 //最後の行まで納期確認!
 for (var i = start; i <= last; i++){

   var cl0,vl0,cl1,vl1,cl2,vl2,cl3,vl3,cl4,vl4,cl5,vl5

     //No
     cl0 = "A"+ i;
     vl0 = sh.getRange(cl0).getValue();
     //タイトル
     cl1 = "B"+i;
     vl1 = sh.getRange(cl1).getValue();
     //発信者
     cl2 = "C"+i;
     vl2 = sh.getRange(cl2).getValue();
     //タスク内容
     cl3 = "D"+i;
     vl3 = sh.getRange(cl3).getValue();
     //納期
     cl4 = "E"+i;
     vl4 = sh.getRange(cl4).getValue();
     //ステータス
     cl5 = "F"+i;
     vl5 = sh.getRange(cl5).getValue();

     // 日付の値がなかったら
       if (vl=4 != "") {
         b = Utilities.formatDate(vl4,"JST","yyyy/MM/dd");
       } else {
         b = "";
       }
        //Gmailの複数宛先を設定
        var arrayEmail = [];
            arrayEmail.push('test1@gmail.com');
            arrayEmail.push('test2@gmail.com'); //任意で追加
            arrayEmail.push('test3@gmail.com'); //任意で追加

        //GOUTLOOKの複数宛先を設定(変数で格納せず、直接メアドを記入)
        var arrayoutlook = ("hoge@outlook.co.jp","hoge@yahoo.co.jp"); //カンマ区切りで追加可能

        //メールの件名を設定
        var subject = [];
         subject.push('【'+ b +'期日アラート】');

         //もし当日納期で未完了だったらメール送信
         if (formatDate == b && vl5 !== true) {

           //gmail送信
           GmailApp.sendEmail(arrayEmail,subject,
             '・No:' + vl0 + '\n・タイトル:' + vl1 + '\n・発信者:' + vl2 + '\n・タスク内容:' + vl3 + '\n・納期:' + b +
             '\n・シートURL:' + ss_url,
           );

           //OUTLOOK送信
           MailApp.sendEmail(arrayoutlook,subject,
             '・No:' + vl0 +
             '\n・タイトル:' + vl1 +
             '\n・発信者:' + vl2 +
             '\n・タスク内容:' + vl3 +
             '\n・納期:' + b +
             '\n・シートURL:' + ss_url,
           );
     }
   }
 }

GASでアラートメールを作成するときのポイント3つ

GASでアラートメールを作成したのですが、コードの内容として自分でも覚えておきたい大事な箇所を3つ記します。

  1. 日付のフォーマット化はifで囲む
  2. 複数人に送信するには配列で指定する
  3. 完了したタスクは送信しない設定に

ポイント1. 日付のフォーマット化はifで囲む

日付をフォーマット化するのですが、めっちゃ前に書いた記事(Google apps scriptで日付を表示してみよう!)だと日付のフォーマット化は以下のように書いてました。

var formatDate = Utilities.formatDate(new Date(), "JST","yyMMdd");

 

だがしかし、日付が空白ではエラーとなってしまいます。(旧記事は書き直していません;)

 

なので以下の通りにifで条件分岐させて、該当したらUtilities.formatDateを充てています。

// 日付の値がなかったら
       if (vl=4 != "") {
         b = Utilities.formatDate(vl4,"JST","yyyy/MM/dd");
       } else {
         b = "";
       }

ポイント2. 複数人に送信するには配列で指定する

GASでアラートメールを複数人に送信するときは、以下のような配列の形式で宛先を指定します。

//Gmailの複数宛先を設定
var arrayEmail = [];
    arrayEmail.push('test1@gmail.com');
    arrayEmail.push('test2@gmail.com'); //任意で追加
    arrayEmail.push('test3@gmail.com'); //任意で追加

 

上記のような配列でアドレスを設定してあげることで、後でアドレス追加や削除など修正が楽ちんに。

 

だがしかし、gasで複数宛先・アドレスへメール送信を設定する際は注意点があります。

アドレスを配列格納するときの注意点

gasで複数宛先をpushメソッドで配列に格納しようとすると、なぜか「outlook」メールだけが配列に格納されません

 

なので今回は以下のように無理やり記述。

//GOUTLOOKの複数宛先を設定(変数で格納せず、直接メアドを記入)
var arrayoutlook = ("hoge@outlook.co.jp","hoge@yahoo.co.jp");

 

この辺は忘れちゃうので、記事に残しました。

参考GASでGmailやOUTLOOKの複数宛先へ送信する設定方法

ポイント3. 完了したタスクは送信しない設定に

進捗が「完了」しているタスクについては、期日になっていても送信しない設定にしておくと親切です。

 

今回のコードだと以下のように設定してあります。

//もし納期が当日で進捗が未完了だったらメール送信
if (formatDate == b && vl5 !== true) {
 MailApp.sendEmail();
}

 

納期が今日・なおかつ進捗がtrueでなかったら、メール送信する分岐です。

 

oyakun
運用側はチェックするだけでOKなので、地味に便利っすよ。

追記:トリガーで自動更新・通知にしておく

超大事なこと忘れてました。

 

GASは定刻にスクリプトを自動起動させる「トリガー」を設定することができるので、もれなく設定しましょう!

oyakun
この記事は自動通知のタイトルなので、トリガーを設定しますw

GASで定刻になったら自動でスクリプトを起動する設定方法

step
1
ツールからスクリプトエディタを選択

script-choice

step
2
時計アイコンからトリガーを選択

triger-choice

step
3
トリガーを追加ボタンをクリック

triger-btn

step
4
トリガーを設定

torger-setting

  1. 自動で起動したいスクリプトを選択
  2. 「Head」のままでOK
  3. 「時間手動型」を選択。イベントの着火種類
  4. 「日付ベースのタイマー」を選択。1日n回の通知を選択可能。
  5. 「午前6時〜7時」を選択。

仕事の前に周知したいスクリプトなので、毎日6~7時頃にトリガーをセットしました。

oyakun
これでシートにタスクが追記になっても、勝手にスクリプトが通知を送ってくれるようになりやす。

まとめ

GASで期日になったらアラートメールを自動配信する方法について、紹介しました。

 

ポイントとしては、

  1. 日付をフォーマット化するときは空白がないこと
  2. 複数が宛先の場合は配列で指定するとメンテがラク
  3. 完了済みのタスクは送信しない設定にする

といった点に配慮すれば、5分くらいで同じ動作が行えるコード作成が完了すると思います。

oyakun
くれぐれもトリガーの設定漏れにはお気をつけください!

関連記事:【要注意】GASで複数の宛先へメール送信する際の設定方法
関連記事:GASでHTMLの入力フォームを作成する方法とポイント2つ

オススメ:【2020年最新版】GoogleAnalytics新規アカウント設定方法

  • この記事を書いた人
  • 最新記事

OYAKUN

30代半ば♂妻・子3人の5人で日々激戦中。Google app script&VBA初心者が自分の備忘録を兼ねて「スプレッドシート、Excel、WordPress、plugin」の設定等、主にブログやアフィリエイト周辺のtipsを背伸びしながらご紹介しています。

© 2021 OYAKUDACHI.XYZ