
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から新たに申請されたときにフローが起動します。
「項目の取得」アクションにより、申請フォームの入力内容を取得します。

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

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

3.Teamsに承認要求を送信する
Excel Onlineから承認者リストの表を取得し、変数に格納します。

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

「承認の種類」では、複数の承認者のうち、最初に応答があった時点で次のフローに進むように設定しました。
承認結果を確認し、申請アイテムの「承認状況」を変更します。

承認の場合
申請の承認状況を「承認済み」に変更し、次のフローへ拒否の場合
申請の承認状況を「却下済み」に変更し、結果を申請者にTeamsで報告してフロー終了
参考:HTTPアクションの使い方
ここからは、HTTPアクションを使ってJira APIにアクセスするフローです。
HTTPアクションはPower Automateの有償ライセンスが必要になりますのでご注意ください。

Jira REST APIの一覧(URIはこちらを参考に指定しました。)
Atlassianでトークンを取得する方法
1. Atlassianアカウントにログイン
2. "APIトークン" セクションまでスクロールし、「新しいトークンを作成」をクリック
3. トークン名を入力し、必要な権限を選択して、「トークンを作成」する
4. 安全な場所にこの新しいAPIキートークンを保存する ※後から再び表示されないため注意!!
4.プロジェクトリーダーと申請者のaccountIDを取得する
Jira API: Find usersを呼び出し、プロジェクトリーダーと申請者のaccountID(Jira上でユーザーを識別するID)を取得します。

「Query」部分でユーザーのメールアドレスで検索をかけています。
5.プロジェクトを作成する
Jira API:Create projectを呼び出し、プロジェクトを作成します。

「Body」の部分では、申請内容をもとに1.と2.で取得したパラメーターを使用してリクエストを作成しています。
6.プロジェクトリーダーと申請者に必要な権限を付与する
Jira API:Get project role by IDを呼び出し、プロジェクトロールの種類を取得します。

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

「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つ存在していることがわかります。

おわりに
いかがだったでしょうか。

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