Backlog「ガントチャート」の内容をSlackへ通知！APIを使ってWorkatoで連携

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/df936d9b-20fb-bb25-be4a-9c3b17fea8a2.png)

Backlog「ガントチャート」の内容をSlackへ通知するレシピを作成したので紹介します。API連携は、iPaaS製品であるWorkatoを使用しました。iPaaSとは異なるアプリケーションを繋ぐ役割をしています。

Backlogには通知機能もありますが、業務に合わせた内容をSlackに通知してくれたら、業務効率化できると思い作成してみました。

# Backlog「ガントチャート」の内容をSlackへ通知

### 「毎週ガントチャートの内容を通知したい」という課題

プロジェクト管理でBacklogを使用しています。毎週、担当者が課題（タスク）に取り組みます。以下のようにBacklogで、約1ヵ月のスケジュールを立てています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/9361ada6-c035-242a-5588-315b3e10dd92.png)

Backlogはスケジュールを把握するためでも使用していますが、

**「今週だれだっけ？」**

**「来週はだれだっけ？」**

**「わたしは次いつだっけ？」**

と**Backlogを見ないと把握できない状態**でした。

なので、自動で毎週ガントチャートの内容をSlackに通知できれば良いなと思ったのがBacklogとSlackのAPI連携を作成するきっかけとなりました。

## 作ったもの


仕組み的には以下のような感じです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/df936d9b-20fb-bb25-be4a-9c3b17fea8a2.png)

BacklogとSlackを直接繋げずに、Workato通して連携しています。
定期実行でWorkatoを起動させて、Backlogのデータを取得しに行きます。
そのあと、Workatoでデータを **（※簡単に）** 綺麗にしてSlackへ通知させます。

<br>

以下は、Slackに通知されるメッセージ文です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/485543bf-40d2-9208-0f42-38e25a61cc28.png)

Workatoでメッセージ内容を作成し、自動で送信をしています。

Workato(iPaaS)はクラウド実行なので、PCが起動されていなくても実行から通知まで、ネットワーク上で完結します。また、Workatoはローコード開発が可能なため、**ほぼマウス操作だけで**作成ができます。

<br>

今回作ったWorkatoのレシピは以下です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/334d2be9-c3bf-92a3-5ec3-4458948fecf5.png)

作り込めば、もっと綺麗に出来るかと思います・・・
今回は、**個人の業務効率化用で「自分が分かればいいや」程度で作ったものです。**

<br>

Workato(iPaaS)は、**BacklogやSlack以外のSaaS製品にも繋ぐことができます。**
業務効率化のメリットと、SaaS製品の可視化ができるため、IT戦略という観点でも期待できます。Workatoに関して別記事で紹介しているので、参考にしてみてください。

<br>

:::note warn
[<font color="#0000FF">**＞ Workato(iPaaS)でクラウドサービスを繋ぐIT戦略 (業務効率化・自動化ブログ byBVT)** </font>](https://bstyle-value-technologies.blogspot.com/2024/05/workato-subscription.html)
:::

<br>

# BacklogのAPI連携に必要な値

Backlog「ガントチャート」の内容をSlackへ通知はWorkatoで実現できました。
API連携には、主にBacklogの設定や値の確認が必要です。
作成時に使用した値を解説していきます。

## APIキーの発行
まずは、BacklogのAPIキーを発行するため、Backlogの個人設定からAPIキーを発行します。

1.右上のプロフィール画像をクリックし**個人設定**へ移動
2.個人設定内の**API**をクリック
3.新しいAPIキーを発行の**登録**をクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/7822ed5a-fe33-495a-0f24-a539784166d9.png)

**※権限が無いとAPIキーは発行できません。**


## パラメーターを確認

### 課題一覧の取得 の Backlog API 情報

取得方法を決めていきます。APIキーを使って取得が可能な状態になったので、
何を取得するか決めていきます。

以下は公式ドキュメントです。この中の**課題一覧の取得**を使用します。

https://developer.nulab.com/ja/docs/backlog/api/2/get-issue-list/

<br>

様々な条件を設定することができますが、今回使用したのは以下のみです。

|項目  |値  |意味  |
|---|---|---|
|メソッド  |GET  |取得するという指示  |
|URL |/api/v2/issues  |どのデータを取得するか  |
|クエリパラメーター名 |projectId[]  |どのプロジェクトを取得か  |
|クエリパラメーター名 |categoryId[]  |どのカテゴリーを取得するか  |
|クエリパラメーター名 |statusId[]  |どのステータスを取得するか  |

### Backlog API に適した設定値

メソッドの設定値はGETですが、その他は取得したいBacklogの情報を設定する必要があります。取得方法は色々あるかと思いますが、私はBacklogのブラウザURLから取得しました。参考にしてみてください。

#### URL（どのデータを取得するか）
BacklogのブラウザURLを使用して、語尾にくっつけます
>例
>https://●●●●●●●.backlog.jp/ **api/v2/issues**

<br>

#### projectId[]（どのプロジェクトを取得か）
プロジェクトIDを設定します。
プロジェクトIDは、プロジェクト設定のブラウザURLの語尾に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/c9b5c437-dd3a-2097-78cd-48c2995a33c6.png)

<br>

#### categoryId[]（どのカテゴリーを取得するか）

取得したいカテゴリーIDを設定します。
（必須ではないので、不要の場合はクエリパラメーター自体不要です。）
カテゴリーIDは、ガントチャートでカテゴリーを設定して検索されると、ブラウザURLの語尾に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/16ca0378-1bc1-9d2d-8056-296b2b0ad20f.png)

<br>

#### statusId[]（どのステータスを取得するか）

取得したいステータスIDを設定します。
（必須ではないので、不要の場合はクエリパラメーター自体不要です。）
ステータスIDは、ガントチャートで状態を設定して検索されると、ブラウザURLの語尾に表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/4c229fa5-740f-1bf5-e33f-0de1d9bb56df.png)

<br>

### HTTPリクエストのレスポンス

API連携に必要な値を設定した後に、HTTPリクエストをします。
HTTPリクエストとは、インターネットを通じて情報を要求する方法です。様々なやり方がありますが、今回はWorkatoで設定しました。設定した場所は以下となります。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570089/696af080-5856-1fdd-e588-91d648486d65.png)


<br>

HTTPリクエストが正常に通信ができたら、以下のような、Responseの値が返ってきます。

```ruby:json
（上部にも色々書いてあって）
Response: {
  "Array": [
    {
      "ID": "XXXX",
      "Project ID": "YYYY",
      "Issue key": "ZZZZ-87",
      "Key ID": "AA",
      "Issue type": {
        "ID": "BB",
        "Project ID": "YYYY",
        "Name": "タスク",
        "Color": "#XXXXXX",
        "Display order": 0
      },
      "Summary": "プロジェクト詳細1",
      "Description": "",
      "Resolution": null,
      "Priority": {
        "ID": "CC",
        "Name": "中",,,,,,,
（下部にもまだ色々書いてあって）
```
戻り値は、名前と値が組み合わせているjsonです。この中に、課題名や担当者名などが書かれています。このjsonを良い感じに整理するとSlack通知用のメッセージ文にできます！

<br>

・・・私は、AIでjsonを整理させました。
AIにPythonを書いてもらい、そのコードを**Workatoにコピペ**しています。
なので、**※簡単に**綺麗にできました。以下の記事を参考にしてみてください。

<br>

:::note warn
[<font color="#0000FF">**＞ Workato×Pythonで生産性向上！SaaS連携だけで可能になる自動化** </font>](https://bstyle-value-technologies.blogspot.com/2024/09/workatoaicodepython.html)
:::

<br>

## iPaaSがあると1から作る必要はない

今回は「Backlogの**プロジェクトを管理する機能**」と「Slackの**チームと連携できる**」 をWorkatoで連携しました。**SaaSの機能だけを繋げて、新しい価値を生み出しました。**

「プロジェクト管理も出来てコミュニケーションも取れてお菓子も作ってくれる最高のSaaS製品がほしい！」となると、膨大なコストが発生します。

Workato(iPaaS)を利用すれば、必要な機能だけを繋げてしまえば良いので、手間とコストを大幅に削減し、開発の生産性が向上します。
今後も、QiitaでWorkatoを使った業務効率化を紹介していこうと思います！


-参考-

https://bstyle-value-technologies.blogspot.com/search/label/Workato