DESIGN REMARKS [デザインリマークス]

【GAS】Googleスプレッドシートから期日アラートメールを送る方法

Googleスプレッドシートで業務管理をしている人は多くいると思います。

今回はGoogle Apps Script(GAS)を使い、
期日(納期)になるとアラートメールが送信されるスクリプトの作り方をご紹介します。

これによって、スプレッドシートでの業務管理での期日(納期)に対する安全性が高まります。機能カスタマイズもしやすくなっています。

まずは実現したい機能を確認する

例えば、以下のようなスプレッドシートがあるとします。
納期 / 状況 / 依頼者 / 依頼タイトル / 依頼内容の列があります。

  • スプレッドシートの1行が1つの業務になっている。
  • 毎日、全ての行の中で、A列の納期が当日である内容がメールで送信される。
  • ただし、B列の状況が完了となっている行は、納期が当日であってもメールは送信されない。
  • 送信されるメールには依頼内容や依頼者などが書かれている。

言葉で説明すると以上のような内容です。
この機能を作っていきます。

主に使用するスクリプトを確認する

スクリプト全体を説明するまえに、主に使用するスクリプトを紹介します。

Utilities.formatDate(date, “JST”,”yyyy/MM/dd”)
日付の文字列を成型するスクリプトです。
納期に書かれた日付と、今日の日付を比較する際に同じ文字列になっている必要があるため、これを使います。

GmailApp.sendEmail(‘mailaddress’,title,text);
メールを送信するスクリプトです。
このスクリプトを使ってアラートメールを送ります。今回はタイトルを内容を工夫してアラートメールとして作り上げます。

.getRange() と .getValue()
.getRange()はセルの取得です。
.getValue()はセルの内容の取得です。

主にはこれらのスクリプトです。
他はシートの取得やfor文・if文を使います。

それでは実際のソースコードを見ていきましょう。

期日アラートメールを送信するスクリプト

期日アラートメールのソースコード全文は以下のようになります。

function mailAlerts() {
  //シートを取得
  var bk = SpreadsheetApp.getActiveSpreadsheet();
  var sh = bk.getActiveSheet();
  
  var last_row = sh.getLastRow(); //最後の行を取得(繰り返し処理の回数)
  var begin_row = 2; // 処理を開始する行 (1行目は項目名なので2から)
  
  //今日の日付を取得し文字列を成型する
  var today =  new Date();  
  var formatDate = Utilities.formatDate(today, "JST","yyyy/MM/dd");

  //繰り返し処理(1行づつ処理し、行の数だけ繰り返す)
  for(var i = begin_row; i <= last_row; i++) {
  //それぞれのセルの中身を取得していく
    //納期(日付は成型する)
    var sell1 = "A"+i;
    var value1 = sh.getRange(sell1).getValue();
    var value1 = Utilities.formatDate(value1, "JST","yyyy/MM/dd");
    //状況
    var sell2 = "B"+i;
    var value2 = sh.getRange(sell2).getValue();
    //依頼者
    var sell3 = "C"+i;
    var value3 = sh.getRange(sell3).getValue();
    //依頼タイトル
    var sell5 = "D"+i;
    var value5 = sh.getRange(sell5).getValue();
    //依頼内容
    var sell6 = "E"+i;
    var value6 = sh.getRange(sell6).getValue();
    
  //もし、今日の日付と納期が同じで、なおかつ状況が完了でない場合メールを送る
    if(formatDate == value1 && value2 !== "完了"){
      GmailApp.sendEmail('test@mail.com',
                         '【納期アラート】本日納期依頼'+ '/依頼タイトル:' + value5,
                         '■依頼者:' + value3 + '\n■依頼内容:'+ value6 + '\n■状況:'+ value2 + '\n■納期:'+ value1);
    }    
  }
  
 }

ポイントは、forループで使っている変数iの値を使って全ての行の全てのセル内容を取得しているとこです。

取得したセル内容を、メール内容にも使っています。そのため、実際に送られてくるメールは以下のようになります。

トリガーを毎日に設定する

スクリプトを作ることができたら、後はトリガーを設定するだけです。

今回の場合、期日(納期)アラートなわけですから、時間主導型で毎日の設定が良いと思います。

実際には以下のようにするのが良いでしょう。

これで期日アラート機能の完成です。

ぜひ活用してみてください。

モバイルバージョンを終了