backlog APIで課題管理
経緯
いちいちBacklogにログインして(もしくはブクマ踏んで)ガントチャートみたり、タスク一覧見るのが面倒
チャットツールに必要最低限の情報を通知してくれれば良くね?
やってみる
サンプル
期限が一週間後の自分が担当の課題一覧をslackにぶん投げる。
echo -n "{\"text\":\"@hogehoge 以下の期限が迫ってます。ご対応ください。\n $(curl --globoff -k "https://${スペース名}.backlog.jp/api/v2/issues?apiKey=API_KEYを入れて&projectId[0]=プロジェクトID入れて&statusId[0]=1&statusId[1]=2&statusId[2]=3&assigneeId[0]=自分のassigneeId入れて&dueDateUntil=$(date "+%Y-%m-%d" -d week)&count=100"|jq|sed -n '/issueKey/,/dueDate/p'|grep 'issueKey\|dueDate'|sed -e "s/変換したい文字列/課題のURLの一部+変換したい文字列/g" -e "s/T00:00:00Z//g" -e "s/,//g"|awk '{print $2}' |sed -e "N;s/\n//g" -e "s/\"\"/\ /g" -e "s/\"//g" | sed -e "s/$/\\\\n/g")\"}" |curl -X POST -H 'Content-type: application/json' -d @- ${投稿したいチャンネルのWebhook URL}
こんな感じの結果がslackに通知される
cronとかで定期実行すれば毎日のリマインダーになるかと
課題へのリンク 期限日
課題へのリンク 期限日
課題へのリンク 期限日
...
..
必要なもの
jqが必要です。
SlackのIncoming Webhooksを利用してます。
Backlogの個人設定からAPI KEYの発行が必要です。
自分のassigneeIdなどは無くても動くので、動かない場合は不要パラメータを削ってみてください。
動いた結果から自分のassigneeIdを見つけて絞り込みに使用してください。
他、スペース名など必要なものはググれば出るので、「Backlog API 使い方」とかでググってください
何をやっているのか
slackのIncoming Webhooksの--data引数のjson部分をecho -n で出力し、そのままcurlに@-で渡してます。
見づらいですが、やってることは下記です。
先頭のechoからcurlまでのなが〜い処理をbashのワンライナーでやってます。
echo -n "{"text":"表示したいもの"}"| curl -X POST -H 'Content-type: application/json' -d @- ${投稿したいチャンネルのWebhook URL}
echo -n "{\"text\":\"@hogehoge 以下の期限が迫ってます。ご対応ください。\n $(curl --globoff -k "https://${スペース名}.backlog.jp/api/v2/issues?apiKey=API_KEYを入れて&projectId[0]=プロジェクトID入れて&statusId[0]=1&statusId[1]=2&statusId[2]=3&assigneeId[0]=自分のassigneeId入れて&dueDateUntil=$(date "+%Y-%m-%d" -d week)&count=100"|jq|sed -n '/issueKey/,/dueDate/p'|grep 'issueKey\|dueDate'|sed -e "s/変換したい文字列/課題のURLの一部+変換したい文字列/g" -e "s/T00:00:00Z//g" -e "s/,//g"|awk '{print $2}' |sed -e "N;s/\n//g" -e "s/\"\"/\ /g" -e "s/\"//g" | sed -e "s/$/\\\\n/g")\"}" |curl -X POST -H 'Content-type: application/json' -d @- ${投稿したいチャンネルのWebhook URL}
おまけ
bashワンライナーの部分の解説。
下記の部分が上記で言うなが〜い処理に当たります。
echo -n "{\"text\":\"@hogehoge 以下の期限が迫ってます。ご対応ください。\n $(curl --globoff -k "https://${スペース名}.backlog.jp/api/v2/issues?apiKey=API_KEYを入れて&projectId[0]=プロジェクトID入れて&statusId[0]=1&statusId[1]=2&statusId[2]=3&assigneeId[0]=自分のassigneeId入れて&dueDateUntil=$(date "+%Y-%m-%d" -d week)&count=100"|jq|sed -n '/issueKey/,/dueDate/p'|grep 'issueKey\|dueDate'|sed -e "s/変換したい文字列/課題のURLの一部+変換したい文字列/g" -e "s/T00:00:00Z//g" -e "s/,//g"|awk '{print $2}' |sed -e "N;s/\n//g" -e "s/\"\"/\ /g" -e "s/\"//g" -e "s/$/\\\\n/g")\"}"
パーツに分解するとこんな感じ
echo -n でダブルクォーテーションで囲った部分(上記nの直後から最後まで)を改行なし画面出力
echo -n
単なる文字列"{"text":"文字列"}"の前半の一部
"{\"text\":\"@hogehoge 以下の期限が迫ってます。ご対応ください。\n
$(bash command)
で$()
で囲まれた内部の結果を変数として渡しています。
$()
の中身はcurlで自分の所属するbacklogのAPIを叩いている
projectId //自分の所属するグループのプロジェクトID
statusId //今回は1~3で完了以外を取ってるつもり
assigneeId //担当が自分
dueDateUntil //締め切り日
count //100件が上限らしいので100件超える場合は取れない。。。
jq //jqコマンドでjsonを改行ありで見やすく整形
sed -n '/issueKey/,/dueDate/p' // issueKeyからdueDateまでの範囲の行を抽出
grep 'issueKey\|dueDate' // issueKeyとdueDateだけを抽出
sed -e "s/変換したい文字列/課題のURLの一部+変換したい文字列/g" // 課題のURIを生成するために変換
-e "s/T00:00:00Z//g" // 締め切り日に不要なT00:00:00Zが付いているので削除
-e "s/,//g" // jsonのカンマが付いているので削除
awk '{print $2}' //"キー:" "バリュー"形式で値が取れるのでバリューだけ抽出
sed -e "N;s/\n//g" //上下2段に必要な情報が分かれて表示されるので1行に統合
-e "s/\"\"/\ /g" //上記1行に統合したので間のダブルクォーテーションをスペースに変換
-e "s/\"//g" //他のダブルクォーテーションは削除
sed -e "s/$/\\\\n/g" //各行の末尾に改行コード(\n)を入れる
Author And Source
この問題について(backlog APIで課題管理), 我々は、より多くの情報をここで見つけました https://qiita.com/jackfrost/items/800856686ff350e076c8著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .