見出し画像

Jiraプロジェクト作成を自動化!Power Automate×REST API活用事例

グループビジネス推進本部では、部内でDXプロジェクトを立ち上げ、DX推進活動を行っています。今回はその活動の中でPower Automateを使用して開発したアプリケーションをご紹介します!


はじめに

みなさま、はじめまして。グループビジネス推進本部の吉田です。
担当業務としては、インテージグループ会社向けの集計システム開発・運用保守をしています。
入社2年目になりますが、大きくて複雑なシステムを扱っているので、今でも毎日学ぶことばかりです!

今回はDX事例として、部内で取り組んだ「Jiraプロジェクト作成の自動化(*1)」についてご紹介します。

*1:Jiraとは
Atlassian社が開発した課題管理・プロジェクト管理ツール
Jira | 課題 & プロジェクト管理ソフトウェア | Atlassian

業務効率化のためにPower Automateを導入したい方、特に「Power AutomateからREST APIを呼び出す方法」に興味のある方は、ぜひ参考にしてみてください!

Power Automateとは?

Power Automateとは、Microsoftが提供するワークフロー自動化ツールで、以下のような特徴を持ちます。

  • 業務プロセスを自動化するためのツール

  • コードを書かずに、簡単にワークフローを作成できる

  • Microsoft製品をはじめ、さまざまなサービスの連携が可能

また、Power Automateには、Desktop版とクラウド版の2つがあります。

Desktop版

  • ローカルコンピューターでの操作自動化に特化

  • 特定のPCにインストールして使用

クラウド版

  • クラウドを介して提供される

  • ウェブベースのアプリケーションやサービスと連携しやすい

  • 複数人でのフロー共有が簡単

主な違いは実行環境ですが、どちらかの環境でしか使用できないアクションが存在していたり、細かい点でも異なりますのでご注意ください。
この記事では「クラウド版」の事例をご紹介します!

開発の経緯

開発に至ったきっかけは、「手作業による運用の課題を解消したい」という思いでした。

「Jiraプロジェクト申請ツール」では、申請フォームをメールからSharePointに変更し、運用者への通知・承認・プロジェクト作成までのプロセスをPower Automateで自動化しました。

開発手順

ここからは、実際の開発手順やポイントについて解説します!

SharePoint で必要なリストを作成

まずはSharePointのリスト機能を使って、必要な画面・テーブルを作成します。

1.申請画面

画像左側のリスト画面でできることは以下の2つです。

  • 左上のボタンから申請フォームを起動

  • リスト画面で過去の申請履歴を確認

画像右側の申請フォームの入力項目は以下のように設定しました。

「カスタムタイプ」「スキームタイプ」では、Jiraの「ワークフロー」や「課題タイプ」といった設定のセットを選択できます。
後述の「マスターテーブル」に登録しています。

2.マスターテーブル

Jiraの「ワークフロー」「課題タイプ」「課題タイプ画面」を設定するために、識別キーを登録するマスターテーブルを作成します。
この識別キーは、後述するPower Automateのフロー内で取得し、Jiraへのリクエスト時に使用されます。

マスターテーブルの画面


Power Automate でフローを作成

フローの大まかな全体像は以下の通りです。

後半では、フローの醍醐味である「HTTPアクションを使ったREST APIへのリクエスト」について解説します。

1.フローを開始し、申請内容を取得する

「自動化されたクラウドフロー」から「項目が作成されたとき」のトリガーを選択します。これにより、SharePointから新たに申請されたときにフローが起動します。
項目の取得」アクションにより、申請フォームの入力内容を取得します。

Power Automateのフロー画面


2.識別キーを取得し、変数に格納する

マスタテーブルを検索し、申請フォームの「カスタムタイプ」もしくは「スキームタイプ」の値に一致する識別キーを取得します。

識別キー取得の例

1.で取得した申請内容の値と、上記で取得した識別キーを変数に格納します。
後のフローで登場する、APIへのリクエストに必要なパラメーターです。

Power Automateのフロー画面

3.Teamsに承認要求を送信する

Excel Onlineから承認者リストの表を取得し、変数に格納します。

Power Automateのフロー画面

承認者にTeamsの承認要求を送信します。

「開始して承認を待機」アクションの詳細

承認の種類」では、複数の承認者のうち、最初に応答があった時点で次のフローに進むように設定しました。


承認結果を確認し、申請アイテムの「承認状況」を変更します。

申請アイテムの一覧
  • 承認の場合
    申請の承認状況を「承認済み」に変更し、次のフローへ

  • 拒否の場合
    申請の承認状況を「却下済み」に変更し、結果を申請者にTeamsで報告してフロー終了

参考:HTTPアクションの使い方

ここからは、HTTPアクションを使ってJira APIにアクセスするフローです。
HTTPアクションはPower Automateの有償ライセンスが必要になりますのでご注意ください。

HTTPアクションの使い方

Jira REST APIの一覧(URIはこちらを参考に指定しました。)

Atlassianでトークンを取得する方法

1. Atlassianアカウントにログイン
2. "APIトークン" セクションまでスクロールし、「新しいトークンを作成」をクリック
3. トークン名を入力し、必要な権限を選択して、「トークンを作成」する
4. 安全な場所にこの新しいAPIキートークンを保存する ※後から再び表示されないため注意!!

 

4.プロジェクトリーダーと申請者のaccountIDを取得する

Jira API: Find usersを呼び出し、プロジェクトリーダーと申請者のaccountID(Jira上でユーザーを識別するID)を取得します。

「HTTP」アクションの詳細

「Query」部分でユーザーのメールアドレスで検索をかけています。

5.プロジェクトを作成する

Jira API:Create projectを呼び出し、プロジェクトを作成します。

「HTTP」アクションの詳細

「Body」の部分では、申請内容をもとに1.と2.で取得したパラメーターを使用してリクエストを作成しています。

6.プロジェクトリーダーと申請者に必要な権限を付与する

Jira API:Get project role by IDを呼び出し、プロジェクトロールの種類を取得します。

「HTTP」アクションの詳細

Jira API:Add actors to project roleを呼び出し、プロジェクトに対するAdmin権限をプロジェクトリーダーのユーザーに付与します。

「HTTP」アクションの詳細

「URI」の「出力」で付与する権限を指定しています。「出力」の中身は、先ほどJira API:Get project role by IDで取得したプロジェクトロールです。

7.結果を申請者のTeamsに通知する

これまでのAPI実行結果に応じて、内容を申請者のTeamsチャットに通知します。

Power Automate上では「条件分岐」アクションを使って、APIごとにリクエスト結果の「Status code」により処理を分岐させています。
(成功なら次のフローへ、失敗なら申請者に通知してフロー終了)

「条件分岐」アクションの詳細



以上、開発の手順とポイントの紹介でした。

開発してみて感じたこと

Power Automateの魅力

Microsoft製品同士だけでなく、REST APIを利用することで他のさまざまなアプリ・サービスとも連携できるのは強みだと感じました。

難しかったところ

Copilotはテスト中のエラー解析では多用したのですが、今回のフローが複雑だったこともあり、設計・開発・修正は最終的に自力で行いました。
「リクエストの送信元IPアドレスを調べる」部分では特に苦労しましたので、解決方法をご紹介します。

参考:送信元IPアドレスを調べる方法

今回はこちらの記事を参考にしました。

注意点として、送信元IPアドレスは複数存在している可能性があり、その場合はすべてのIPアドレスを確認・許可設定しなければなりません
(送信元のAzure Logic Appsがマルチテナント方式を採用しているためです)

具体的には、上記の方法を一通り実行した後、以下のURLを入力したブラウザを何度か更新してみてください。


すると、Webhookのサイトの左側に、更新した回数だけ送信元IPアドレスが表示されます。この場合だと、2つ存在していることがわかります。

Webhookの画面

おわりに

いかがだったでしょうか。

今回の仕組みによって、申請からJiraプロジェクト作成までの手間を大幅に削減することができました。
本記事が、みなさんの業務効率化のヒントになれば幸いです。
ぜひ参考にしてみてください!

この記事が参加している募集