【Trello】Google Apps Scriptで明日締切のカード数をチャットワークで通知する方法

みなさん、こんにちは!
タダケン(@tadaken3)です。
ゼルダの伝説 ブレス オブ ザ ワイルドをクリアし、ハイラルに平和を取り戻しました。
これで無事にブログ執筆に専念できます。

さて、前回はTrelloのAPIで取得した情報をスプレッドシートに保存する方法をお伝えしました。

Google Apps ScriptでTrelloのカード一覧をスプレッドシートに保存する方法
Google Apps ScriptでTrelloのカード一覧をスプレッドシートに保存する方法をお伝えします。UrlFetchAppのfetchメソッドを使ってデータを取得し、getRangeメソッドとsetValuesメソッドでシートに保存します。

今回は、取得したカード一覧の中から、締め切りが明日のカードをカウントして、チャットワークに通知するところまでご紹介します。チャットワークに通知することで、タスクの締切忘れの予防につながります。タスク管理を自動化する流れを学んでいきましょう。

スポンサーリンク

前回のおさらい

TrelloのAPIから取得したJSONの情報加工してをスプレッドシートに保存しました。
前回のコードは以下のとおりです。

function getCardId() {

  var trelloKey   = "XXXXXX";//keyを入力してください
  var trelloToken = "XXXXXX";//tokenを入力してください
  var listId  = "XXXXXX";//リストIDを入力してください

  var url = "https://trello.com/1/lists/" + listId + "/cards?key=" + trelloKey + "&token=" + trelloToken;
  var res = UrlFetchApp.fetch(url, {'method':'get'});
  var json = JSON.parse(response.getContentText());

  var cards =[]; //箱を作る
  var maxRows = json.length; //格納されているデータの行数を取得
  for(var i = 0; i < maxRows; i++){

     //必要なデータのKeyを指定して値を取得する
     var name = json[i].name;
     var due = json[i].due;
     var idMembers = json[i].idMembers;
     var dateLastActivity = json[i].dateLastActivity;
     var shortUrl = json[i].shortUrl;

     //取得したここのデータをまとめて、ひとつのカード情報としてまとめる
     var card = [name, due, idMembers, dateLastActivity, shortUrl];

     //先程取得したcardsという箱に追加する
     cards.push(card);
  }

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('list');//リストというシートに保存
  var lastRow = cards.length;
  var column = cards[0].length;
  sheet.getRange(2,1,lastRow,column).setValues(cards);
}

明日締め切りのカード数をカウントする

今回はforループとif文を組み合わせて、条件に一致するカードの数をカウントします。

myCardsCntという変数を作成し、そこにdue(締切日)が、明日の日付とマッチする場合に、myCartdsCntをプラス1していきます。文字列に特定の文字が含まれているかを確認するには、matchメソッドを使用します

書き方は

文字列オブジェクト.match(検索したい文字列)

です。

日付の形式をTrelloと同じ形式にするにはUtilities.formatDateを使います。

このように

Utilities.formatDate(日付, タイムゾーン, フォーマット)

かきます。

詳しい解説は以下の記事も参考にしてみてください。

GASでチャットワークにGoogleアナリティクスの前日レポートを自動送信
以前、Googleアナリティクスの日次レポートを自動記録する方法をお伝えしましたが、今回はさらに発展をさせてそれをGoogle Apps Scriptを使ってチャットワークに毎朝自動で通知します。
function getCardId() {
  //省略
  //JSONデータから、明日締め切りのタスク数をカウントします。
  var myCardsCnt = 0;
  var date = new Date()
  date.setDate(date.getDate() + 1)//今日の日付に1を足して、明日の日付にする
  var tommorow = Utilities.formatDate(date, 'Asia/Tokyo' , 'YYYY-MM-dd');

  for(var i = 0; i < maxRows; i++){
    var due = json[i].due;
        if(due != null && due.match(tommorow)){ //空白の場合も除いています。
          myCardsCnt++
        }
   }
}

カウントした情報を元にチャットワークに通知するメッセージを作成する

if文を使って、チャットワークに通知するメッセージを出し分けます。明日締切のカードがない場合とある場合に分けて、メッセージを作成してみましょう。

実際のコードは以下のようになります。

function getCardId() {
  //省略
  //JSONデータから、明日締め切りのタスク数をカウントします。
  var myCardsCnt = 0;
  var date = new Date()
  date.setDate(date.getDate() + 1)//今日の日付に1を足して、明日の日付にする
  var tommorow = Utilities.formatDate(date, 'Asia/Tokyo' , 'YYYY-MM-dd');

  for(var i = 0; i < maxRows; i++){
      var due = json[i].due;
        if(due != null && due.match(tommorow)){ //空白の場合も除いています。
          myCardsCnt++
        }
   }

    //myCardsCntの数でチャットワークに送信するbodyの内容を作成
    var body;
    if (myCardsCnt==0){
      body = "明日(" + tommorow +")締切のタスクはありません。順調順調!";
    } else {
      body = "【 " +  parseInt(myCardsCnt) + " 個】 のタスクが明日、締切であります"
    }
}

チャットワークにメッセージを送信する

最後に作成したメッセージをチャットワークで通知します。今回はライブラリ「ChatWorkClient for GAS」を使って、送信します。

詳しくは以下の記事もご覧になってください。

Google Apps Scriptの第一歩、初心者でもチャットワークにメッセージを送れる
Google Apps Scriptの第一歩ですが、しょっぱなから真っ先にチャットワークを操作してしまいます。初回はGASのプロジェクトの作成、ライブラリの追加、スクリプトの記述と実行までです。

コードはこのようになります。

function getCardId() {
  //省略
  //JSONデータから、明日締め切りのタスク数をカウントします。
  var myCardsCnt = 0;
  var date = new Date()
  date.setDate(date.getDate() + 1)//今日の日付に1を足して、明日の日付にする
  var tommorow = Utilities.formatDate(date, 'Asia/Tokyo' , 'YYYY-MM-dd');

  for(var i = 0; i < maxRows; i++){
      var due = json[i].due;
        if(due != null && due.match(tommorow)){ //空白の場合も除いています。
          myCardsCnt++
        }
   }

    //myCardsCntの数でチャットワークに送信するbodyの内容を作成
    var body;
    if (myCardsCnt==0){
      body = "明日(" + tommorow +")締切のタスクはありません。順調順調!";
    } else {
      body = "【 " +  myCardsCnt + " 個】 のタスクが明日、締切です"
    }

    //チャットワークにメッセージを送信する
    var client = ChatWorkClient.factory({token: "XXXXXXXXXXXX"}); //チャットワークのトークンを入力して下さい
    var roomId = "12345678"//チャットワークのルームIDを入力してください。
    client.sendMessage({room_id: roomId, body: body});
}

前回のコードと今回作成したコードをまとめる

今回作成したコードと前回のコードを合わせてものを以下に記載しています。
少しずつ書き進めましたが、少し長めのコードが書けるようになりましたね。

function getCardId() {

  var trelloKey   = "XXXXXX";//keyを入力してください
  var trelloToken = "XXXXXX";//tokenを入力してください
  var listId  = "XXXXXX";//リストIDを入力してください

  var url = "https://trello.com/1/lists/" + listId + "/cards?key=" + trelloKey + "&token=" + trelloToken;
  var res = UrlFetchApp.fetch(url, {'method':'get'});
  var json = JSON.parse(response.getContentText());

  var cards =[]; //箱を作る
  var maxRows = json.length; //格納されているデータの行数を取得
  for(var i = 0; i < maxRows; i++){

     //必要なデータのKeyを指定して値を取得する
     var name = json[i].name;
     var due = json[i].due;
     var idMembers = json[i].idMembers;
     var dateLastActivity = json[i].dateLastActivity;
     var shortUrl = json[i].shortUrl;

     //取得したここのデータをまとめて、ひとつのカード情報としてまとめる
     var card = [name, due, idMembers, dateLastActivity, shortUrl];

     //先程取得したcardsという箱に追加する
     cards.push(card);
  }

  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName('list');//リストというシートに保存
  var lastRow = cards.length;
  var column = cards[0].length;
  sheet.getRange(2,1,lastRow,column).setValues(cards);
}

 //JSONデータから、明日締め切りのタスク数をカウントします。
  var myCardsCnt = 0;
  var date = new Date()
  date.setDate(date.getDate() + 1)//今日の日付に1を足して、明日の日付にする
  var tommorow = Utilities.formatDate(date, 'Asia/Tokyo' , 'YYYY-MM-dd');

  for(var i = 0; i < maxRows; i++){
      var due = json[i].due;
        if(due != null && due.match(tommorow)){ //空白の場合も除いています。
          myCardsCnt++
        }
   }

    //myCardsCntの数でチャットワークに送信するbodyの内容を作成
    var body;
    if (myCardsCnt==0){
      body = "明日(" + tommorow +")締切のタスクはありません。順調順調!";
    } else {
      body = "【 " +  myCardsCnt + " 個】 のタスクが明日、締切です"
    }

    //チャットワークにメッセージを送信する
    var client = ChatWorkClient.factory({token: "XXXXXXXXXXXX"}); //チャットワークのトークンを入力して下さい
    var roomId = "12345678"//チャットワークのルームIDを入力してください。
    client.sendMessage({room_id: roomId, body: body});
}

まとめ

今回は、カード一覧から明日締切のタスクをカウントして、チャットワークで送信する方法をお伝えいたしました。今回のテクニックを応用すれば、自分のタスクだけを通知したり、週のはじめに今週分のタスクを通知することもできます。タスク管理を自動化することで、より有益な仕事に時間をさくことができると思いますので、ぜひチャレンジしてみてください。

次回もTrelloに関するテクニックをお伝えしていきますね。どうぞ、お楽しみに!

よろしければ、こちらからTwitterアカウントのフォローをお願い致します。

連載目次:Google Apps ScriptでTrelloを操作する

本シリーズではGoogle Apps Scriptで、Trelloを操作する方法をご紹介します。Trelloを操作することで、タスク管理も自動化することができます。
  1. Google Apps ScriptでTrelloを操作するはじめの一歩
  2. Google Apps ScriptでTrelloのリスト一覧とカード一覧を取得する
  3. Google Apps ScriptでTrelloのカード一覧をスプレッドシートに保存する方法
  4. 【Trello】Google Apps Scriptで明日締切のカード数をチャットワークで通知する方法
タイトルとURLをコピーしました