LoginSignup
35
39

More than 5 years have passed since last update.

【GAS】Backlogの残タスク(課題チケット)をGASで取得してチャットワークに流す

Last updated at Posted at 2015-06-09

はじめに

チケット駆動の開発を続けていると、日々の振り返りの中で残りチケット・タスクを確認する機会があると思います。
それが朝会の場であったり、夕会であったりしますが、その都度Backlogを開いて検索かけてーとやっていると面倒です。せっかくAPIが公開されているのなら、定期的にチケットの一覧をチャットワークに投稿すれば、確認も早いんじゃないかと思いました。

チャットワークに投稿するだけでなく、スプレッドシートにも書き込めるようにしています。

雑なGASのスクリプトで申し訳ありませんが、何かの参考になればと。

Backlog APIのリファレンスはこちら
http://developer.nulab-inc.com/ja/docs/backlog

てかGASって何?

GoogleAppsScriptの略で、簡単に言うとGoogle製のサービスのプログラム環境です。JavaScriptで記述できます。プログラムを作ることで、例えば表計算を自動化したり、サービス間の連携を行うといったことが可能になります。

簡単に使用する場合

スプレッドシートを新規作成 > ツール > スクリプトエディタ

オンラインエディタが開かれ、JavaScriptを書いていきます。

必要なもの

APIキーはそれぞれのリファレンスを参考に取得します

  • BacklogのAPIキー
  • ChatWorkのAPIキー
  • BacklogのプロジェクトのID

GASのスクリプト


function task() {

    // スプレットシート取得
    var mySS = SpreadsheetApp.openById("***スプレットシートのID***");
    // スプレットシートの書き込む位置
    var range= mySS.getSheetByName("**シートの名前**").getRange(1, 1);

    // BacklogプロジェクトのID
    var pjid = **PJ ID**;

    // ChatWorkに投稿する本文
    var honbun = "";

    // APIキーでBacklog認証&取得
    var resissue = UrlFetchApp.fetch("https://***.backlog.jp/api/v2/issues?apiKey=*******APIキー*******&projectId[]="+pjid+"&statusId[]=1&statusId[]=2&statusId[]=3&order=&count=100"); 

    if (resissue.getResponseCode() != 200) {
        return false;
    }
    var issuelist = JSON.parse(resissue.getContentText());

    // 一旦、シートをクリアにする 
    mySS.getSheetByName("**シートの名前**").getRange("A2:G"+issuelist.length+"").clearContent();

    for(var i=1; i<issuelist.length; i++) {

      // スプレッドシートに書き込む
      range.offset(i, 0).setValue(issuelist[i]["issueKey"]);
      range.offset(i, 1).setValue(issuelist[i]["summary"]);
      range.offset(i, 2).setValue(issuelist[i]["description"]);
      range.offset(i, 3).setValue(issuelist[i]["assignee"]["name"]);
      range.offset(i, 4).setValue(issuelist[i]["priority"]["name"]);
      range.offset(i, 5).setValue(issuelist[i]["status"]["name"]);
      range.offset(i, 6).setValue(issuelist[i]["dueDate"]);

      // 投稿するメッセージの本文 
      honbun += issuelist[i]["issueKey"] + "   ";  
      honbun += issuelist[i]["summary"] + "   ";  
      honbun += "担当:" + issuelist[i]["assignee"]["name"] + "   ";
      honbun += "優先度:" + issuelist[i]["priority"]["name"] + "   ";
      honbun += "ステータス:" + issuelist[i]["status"]["name"] + "\n";
      honbun += "https://****.backlog.jp/view/" + issuelist[i]["issueKey"] + "\n[hr]";

    }

    //ここからはChatWork

    var client = ChatWorkClient.factory({token: "***ChatWorkのAPIキー***"}); 

    /* 決められた記法をもとに整形。
    投稿する部屋のIDと共に
    メッセージを投稿します。*/
    client.sendMessage({ 
      room_id:***room ID***, 
      body: "[info][title]残タスク一覧[/title]\n"+honbun+"\n現在の残タスクになります。完了しているタスクについてはステータスを変更してください。\n [/info]"
    }); 

}

課題の一覧の取得

https://***.backlog.jp/api/v2/issues?apiKey=*******APIキー*******&projectId[]="+pjid+"&statusId[]=1&statusId[]=2&statusId[]=3&order=&count=100

クエリ status は課題の状態なので、完了以外の「未対応(ID:1)」「処理中(ID:2)」「処理済み(ID:3)」を指定。
最後のクエリ count は取得する件数を指定しています。
ここでは100件。

クエリパラメーターの詳細はコチラで
http://developer.nulab-inc.com/ja/docs/backlog/api/2/get-issues

ChatWorkClientライブラリの追加

ChatWorkにメッセージ投稿するには、GAS側でChatWorkのClientライブラリを追加する必要があります。

スクリプトエディタの
リソース > ライブラリ

からライブラリを追加します。プロジェクトキーは以下に記述されています。
https://github.com/cw-shibuya/chatwork-client-gas

拡張子を「ChatWorkClient」にして下さい。

あとはスクリプトエディタから時計のようなアイコン(トリガー)で好きな時間でこの関数が実行されるように設定。

結果

スプレッドシート

spsheet.png

ChatWork

lovewg.png

GASは面白い

35
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
35
39