###前提・実現したいこと
スプレッドシートで作ったタスク表をGoogle Apps Scriptで取得して、Slackに通知したいのですが、知識不足で手こずっております。スプレッドシートを変更した際に、チャンネルに通知するとこまでは出来ました。
次にやりたいのが、slackbotに担当タスクを通知することです。
朝10時もしくは、変更が加わった際に、自分のタスク一覧をbotに通知したい。
###slackbotに下記内容を表示したい
担当者01さんのタスク一覧です。 【未着手】3/30〆 テスト作業01 【未着手】3/31〆 テスト作業01 【未着手】4/1〆 テスト作業01
https://docs.google.com/spreadsheets/d/18FypSL7pi9CBPQZ3jbpTxOnpHWaBpNxHxXKetNcaVO8/edit?usp=sharing
###その他手こずってるのが、ループ分の処理です
その他手こずってるのが、ループ分の処理です。
担当者の列で、自分の名前があった行のデータを1つのメッセージにまとめて、投稿したいのですが、その記述で書き方がわからず調べてるところです。
###Google Apps Scriptのソースコード
var postUrl = "https://hooks.slack.com/services/xxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxx"; var postChannel = "#channel"; var statusCol = 2; // ステータス列 var deadlineCol = 3; // 締め切り列 var taskTitleCol = 4; // タスクタイトル列 var inChargePersonCol = 5; // 担当列 var dataStartCol = 2; // データが開始する列 var colOffset = 1; // A列はoffset var dataColNum = 6; // データの列数 function myOnEdit() { var range = SpreadsheetApp.getActiveRange(); var rowidx = range.getRow(); var colidx = range.getColumn(); var sheet = SpreadsheetApp.getActiveSheet(); // ステータスに変更のあったtodo1行 var aLine = sheet.getRange(rowidx, dataStartCol, 1, dataColNum); if(!aLine){return;} // ステータスの値 var status = aLine.getCell(1,statusCol-colOffset).getValue(); // 締め切り列の値 var deadline = aLine.getCell(1,deadlineCol-colOffset).getValue(); // 依頼担当列1の値 var username = aLine.getCell(1, inChargePersonCol-colOffset).getValue(); if(!username){username = "unknown";} // タスクの内容 var taskTitle = aLine.getCell(1, taskTitleCol-colOffset).getValue(); if(!taskTitle){return;} if(colidx != statusCol){return;} if( status == '完了' ){ var message = username + "さんが、タスク「" + taskTitle + "」を" + "【完了】" + "にしました"; } else if(status == '未着手' || !status){ var message = username + "さんが、タスク「" + taskTitle + "」を" + "追加しました"; } sendHttpPost(message, "タスクのお知らせ"); } function test() { sendHttpPost("上様が、タスク「ほげほげほげ」のステータスを【進行中】にしました", "テスト"); } function sendHttpPost(message, username) { var jsonData = { "channel" : postChannel, "username" : username, "text" : message }; var payload = JSON.stringify(jsonData); var options = { "method" : "post", "contentType" : "application/json", "payload" : payload }; UrlFetchApp.fetch(postUrl, options); }
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/23 23:33