こんにちは。
アスクルに中途入社して3年目になりましたkensです。
普段の業務は、開発部門のソフトウェア品質保証(いわゆるQA)を担当するチームに所属し、日々弊社内のソフトウェア品質向上を図っています。
今回は、Power Automateを使って社内業務を自動化したことをご紹介します。
Power Automateとは
弊社記事(Power Automateで業務効率向上を目指し業務を半自動化した話)にて記載しておりますが、
Microsoftが提供する『繰り返し発生するタスクをフローにして自動化するためのSaaSプラットフォーム』です。
Microsoft製品やSlack等のさまざまな外部サービスとスムーズに連携できるといった特徴があります。
また、ノーコード/ローコードツールのため、特別なプログラミング知識を持たなくても、直感的な操作で簡単に使いこなすことができると言われています。
今回の記事では、クラウド版を使用しております(デスクトップ版も存在しますが今回の記事では使用しておりません)。
Power Automate(クラウド版)の長所/短所
実際に当該ツールを使用しての長所/短所をまとめてみました。
長所
- 業務フローが決まっているルーティンワークを自動化できる
- ヒューマンエラーによる入力ミスを削減できる
- Microsoft製品と親和性が高い
- 作成の難易度がプログラミングよりは低く、テンプレートが用意されている物もある
短所
- 人による思考/判断が必要な業務の自動化には向かない
- 書籍やネット上などで、ノウハウが少ない
- ノーコードでの作成はほぼ無理(若干のコード作成は必要)
- APIの理解が無いと、HTTP通信するフローの作成は難しい
- premiumコネクタという機能を使用する場合は、特別な有料ライセンスを付与されている必要がある
業務改善の課題
品質保証業務を行っていることから、他部門と接することが多いため、よく悩みを聞きます。
今回は弊社内のシステム企画部門から次のような業務課題を伺い、それを改善することになりました。
- ソフトウェアの不具合を管理しているBacklogのチケット追い回しをSlack上で手動投稿しており、効率が悪い
- 投稿するパターンが8パターンあり、投稿に手間がかかっている
- 管理するBacklogのチケット数が、(絞り込み条件にもよるが)数十件はあるため手が回らない
- 自動化させたいが、部門内でノウハウがない
上記弊社記事 を書いたもりぱーさんと協業で、この業務課題を解決することとしました。
Power Automateを導入した自動化フロー
Power Automateを導入した自動化フローの全体図は次のとおりです。
このフローを、8パターン作成しました。
要件詳細
要件詳細は次のとおりです。
要件詳細:
◆Power AutomateからBacklogの絞り込み検索APIを呼び出し、そのレスポンスを受け取る。
(絞り込み検索は8パターン作成する)
◆レスポンスから該当チケットの有無を確認する。
◆該当チケットが有る場合、チケットの番号/担当者/所属チーム名などをSlackへ投稿する。
◆該当チケットが無い場合、その旨を投稿する。
◆チケットに宛先が設定されていない場合、その旨を投稿する。
◆Slack投稿した内容を、Sharepoint上のExcelファイルへLog出力する。
技術詳細
技術詳細は次のとおりです。
技術詳細:
◆Power AutomateからBacklogおよびSlackを連携させる。
(Backlogへの連携機能は標準で備わっていないため、HTTP通信を利用する)
◆Power Automate上で該当チケットの有無判定等の処理を実装する。
◆Slackへの投稿時、Backlog担当者の絞り込みにSlack IDを利用する。
◆Backlog担当者の所属チームを設定する為、次のようなリストを参照する。
No | 所属 | 名前 | Backlog Mail | Slack ID |
---|---|---|---|---|
1 | 品質保証部 | kens | xxx@example.com | UXXX01 |
2 | 開発部 | もりぱー | xxx@example.com | UXXX02 |
作成したフローのご紹介
今回は、作成したパターンの中から1つのフローをご紹介します。
フローの全貌は、縦長のため複数の画像に分割して掲載いたします。
フロー画像1/9

フロー画像2/9

フロー画像3/9

フロー画像4/9

フロー画像5/9

フロー画像6/9

フロー画像7/9

フロー画像8/9

フロー画像9/9

作成したフローの解説
フローについて、上から順番に解説いたします。
画像1枚目
フロー画像1/9の詳細表示

画像1枚目_Power Automateのフロー設定アクションの解説
1-1. 時間指定
- 「スケジュール→繰り返し」で投稿日時や頻度を設定する。
1-2. 現在の 時刻を取得
- 「現在の時刻」でフロー実行時の、時刻を取得する。
1-3. 日本時間への変換
- 「タイムゾーンの変換」でUTCから日本時間に変換する。
1-4. Slack投稿先チャンネル変数を設定
- 「変数を初期化」でSlackの投稿先チャンネル名を設定する。
1-5. APIキー変数を設定
- 「変数を初期化」でBacklogから取得したAPIキーを設定する。
1-6. BacklogURL変数を設定
- 「変数を初期化」でBacklogURLを設定し、APIキーを使用する。
1-7. BacklogAPIパラメータ追加
- 「文字列変数に追加」でAPIリクエストパラメータを入力する。
1-8. Backlog絞り込み検索URLを設定
- 「変数を初期化」で独自の絞り込み検索URLを設定する。
画像2枚目
フロー画像2/9の詳細表示

画像2枚目_BacklogAPIとログ関連アクションの解説
2-1. BacklogAPI呼び出し
- 「HTTP」アクションを使用し、URLに「BacklogURL変数」を指定し、GETメソッドを選択する。
2-2. レスポンスを受け取る
- 「変数を初期化」で配列タイプの変数にBacklogAPI呼び出しのBodyを選択する。
2-3. ログ用変数宣言(該当チケットなし)
- 「変数を初期化」でログ用の出力日時を「現在の時刻」から取得する。
2-4. ログ出力宣言(該当チケットなし)
- 「変数を初期化」で該当追いまわしパターンがないことを宣言する文字列を設定する。
2-5. 表内行を一覧表示(該当チケットなし)
- SharePointのExcelファイルのパスを指定し、テーブル化されたデータを一覧表示する。
2-6. 最終行のNo取得(該当チケットなし)
- 「データ操作」で数式を使用して最終行のNoを取得する。
画像3枚目
フロー画像3/9の詳細表示

画像3枚目_ログ出力のための変数初期化の解説
3-1. Excel No初期化(該当チケットなし)
- 「変数を初期化」で整数型を設定し、前のステップから取得したNoを基に次の番号を生成する数式を入力する。
3-2. 出力日時変数の宣言(該当チケット有り)
- 「変数を初期化」で文字列型を設定し、「現在時刻を日本時間に変換する」で設定した時刻を使用する。
3-3. 追いまわしパターン変数宣言(該当チケット有り)
- 「変数を初期化」でログ出力するパターン名称を文字列型で設定する。
3-4. バックログNo変数宣言(該当チケット有り)
- 「変数を初期化」で文字列型を設定し、値は空欄にする。
3-5. メールアドレス変数宣言(該当チケット有り)
- 「変数を初期化」で文字列型を設定し、値は空欄にする。
画像4枚目
フロー画像4/9の詳細表示

画像4枚目_BacklogAPIとExcel操作の解説
4-1. JSONの解析
- BacklogAPI実行後、受け取ったJSONデータをテキストファイルに控え、スキーマを生成する。データ操作アクションでAPIのbodyを選択し、スキーマ生成リンクを使用してテキストファイルの内容を貼り付ける。
4-2. 表内行一覧の表示(該当チケット有り)
- Excel Onlineで、SharePointのパスを指定し、テーブル名を設定してデータを一覧表示する。並び替え順をNoの降順に設定し、最上位の行を取得する。
4-3. 最終行のNo取得(該当チケット有り)
- データ操作アクションを使用し、最終行のNoを取得するための数式を挿入する。
4-4. Excel No初期化(該当チケット有り)
- 変数を初期化し、整数型として前のステップで取得したNoに1を加え、新しいNoを生成する。
画像5枚目
フロー画像5/9の詳細表示

画像5枚目_Slack投稿条件設定の解説
5-1. 真の場合: リマインドなしSlack投稿
- 前提条件: ボットとしてSlackに投稿。カスタム絵文字をワークスペースに登録済み。
- アクション:
- 「Slack_メッセージの投稿(v2)」でチャンネル名に「slack投稿先チャンネル変数」を使用する。
- メッセージテキストでリマインドがない旨を通知し、Backlog絞り込み検索URLを表示する。
- 詳細パラメータでボット名を設定し、リンクの展開を無効にし、カスタム絵文字をアイコンとして使用する。
5-2. 偽の場合
- この分岐ブロックでは何も行わず、次のフローへ進む。
画像6枚目
フロー画像6/9の詳細表示

画像6枚目_Excel操作と変数設定の解説
6-1. 真の場合: 表に行を追加
Excelファイル設定:
- 「Excel Online(Business)→表に行を追加」で、SharePointのパスとテーブル名を指定する。
- 詳細パラメータでログのNo、日時、出力パターン、絞り込みURLを設定し、前のステップからのデータを使用する。
終了:
- フローを終了し、以後の処理は行わない。
6-2. 偽の場合
- この分岐では何も行わず、次のフロー「メールアドレス変数」へ進む。
6-3. メールアドレス変数を設定
- 「変数を初期化」で文字列型の変数を設定し、値は空欄にする。
6-4. チケットキー変数を設定
- 「変数を初期化」で文字列型の変数を設定し、値は空欄にする。
6-5. Slack文言変数を設定
- 「変数を初期化」でSlack通知用の文字列を設定し、Backlog絞り込み検索URLを表示するリンクを含める。
画像7枚目
フロー画像7/9の詳細表示

画像7枚目_フラグとループ処理の解説
7-1. 担当者有無フラグ
- 設定:「変数を初期化」でブール値を設定し、初期値はfalseに設定する。
7-2. Loop処理
- Loop処理概要:「コントロール→それぞれに適応する」でレスポンスデータをループさせる。
- チケットキーの取得:「変数の設定」でチケットキーを取得する。
7-3. 担当者設定の有無確認
- 条件設定:「コントロール→条件」で担当者の有無を確認する。
- 真の場合:
- 担当者未設定の場合、フラグをtrueに設定する。
- 「slack文言変数」に担当者なしのチケット情報を追加する。
7-4. 偽の場合処理
- メアド取得: チケットの担当者メールアドレスを取得する。
- SlackID取得: ExcelファイルからSlack IDを取得し、関連する情報を設定する。
画像8枚目
フロー画像8/9の詳細表示

画像8枚目_Slack通知とデータ操作の解説
8-1. Slack文言変数の更新_Trueの場合: メンションとチケット追加
- アクション:「文字列変数に追加」で、Slack文言変数にチケット情報とメンションを追加。所属情報とSlack IDを組み合わせた文字列を使用する。
8-2 同Falseの場合: メンションとチケット追加 (テーブル登録なし)
- アクション:「文字列変数に追加」で、Slack文言変数にチケット情報と所属登録なしの通知を追加する。
8-3. Slackへ投稿
- 投稿設定:「slack_メッセージの投稿(v2)」で、チャンネル名とメッセージテキストを設定。宛先のCC設定やボット名、カスタム絵文字も指定する。
8-4. For each1ブロック内処理_JSON解析とログ用メールアドレス取得
- メールアドレス取得:「変数の設定」でJSON解析からメールアドレスを取得する。
8-5. 同処理_JSON解析結果からSlackID取得
- Excel操作:「Excel Online(Business)→行を取得」でSlack IDを取得。SharePointのパスとExcelファイルの設定を使用する。
画像9枚目
フロー画像9/9の詳細表示

画像9枚目_Excelログ出力と変数操作の解説
9-1. Trueの場合: 表に行を追加(対象チケットあり)
- Excel設定:
- 「表に行を追加」で、SharePointのパスとExcelテーブル名を指定。
- 詳細パラメータでNo、ログ出力日時、出力パターン、絞り込みURL、リリース予定日、Backlog No、所属チーム名、メンション対象者、Eメールアドレスを設定。
9-2. Falseの場合: 表に行を追加(所属不明)
- Excel設定:
- 「表に行を追加」で、同様の項目を設定。ただし、所属チーム名は「所属登録無し」とする。
9-3. 変数の値を増やす
- 操作:「変数の値を増やす」で、ログ出力用のExcel Noをインクリメントする。
最後に
今回はPower Automateで作成した、Backlogから抽出した情報をSlackへ自動通知するフローをご紹介しました。
Power Automateは特徴と使い方を理解すれば、まだまだ業務改善に役立てるポテンシャルがあると思いました。
また、自部門だけでなく他部門にも目を向けることで業務改善を図れる可能性が多くあることがわかりました。
今後も広い視点で業務改善を行えるとよいなと思いました。
今回得た知見を基に、多くの方にノウハウを共有し、より多くの品質/生産性向上に寄与できればと思います。
最後になりますが、本件へ携わった方々に謝辞を述べたいと思います。
皆様のご尽力とご協力により、業務改善が行えましたこと、心より感謝申し上げます。
ありがとうございました!