みなさん、こんにちは!
タダケン(@tadaken3)です。
ゼルダの伝説 ブレス オブ ザ ワイルドをクリアし、ハイラルに平和を取り戻しました。
これで無事にブログ執筆に専念できます。
さて、前回はTrelloのAPIで取得した情報をスプレッドシートに保存する方法をお伝えしました。
今回は、取得したカード一覧の中から、締め切りが明日のカードをカウントして、チャットワークに通知するところまでご紹介します。チャットワークに通知することで、タスクの締切忘れの予防につながります。タスク管理を自動化する流れを学んでいきましょう。
前回のおさらい
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メソッドを使用します
書き方は
です。
日付の形式をTrelloと同じ形式にするにはUtilities.formatDateを使います。
このように
かきます。
詳しい解説は以下の記事も参考にしてみてください。
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」を使って、送信します。
詳しくは以下の記事もご覧になってください。
コードはこのようになります。
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アカウントのフォローをお願い致します。