
みなさん、こんにちは!
タダケン(@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アカウントのフォローをお願い致します。

