今回は、Microsoft 365に登録されているユーザーのスキルや資格情報が管理できるアプリの作り方を紹介します。Micosoft 365のユーザー情報には、住所や電話番号、役職などを登録できますが、「スキルや資格情報も一緒に管理できようにしたい」という、要望を受けることがあります。

スキルや資格情報はExcelで管理をすることも可能ですが、組織ごとに様式やルールがバラバラになってしまったり、属人化してしまったりといった問題が出てきます。組織全体で単一のアプリケーションによって管理業務を行うことで、入力される情報は自動的に整えられ、属人化を防ぐことにもつながります。

さらにPower Appsを使えば、画一的なアプリケーションにありがちな実際の運用とのギャップをローコーディング開発で解消することもできます。

この仕組みが使えるようになると、さまざまな情報をMicrosoft 365ユーザーにひもづけて管理できるようになるので、ぜひトライしてみて下さいね。以下、アプリの開発手順を説明します。

資格情報を管理するExcelシートを用意する

資格情報を管理するためのExcelシートを作成します。下図に書かれている列名をExcelシートの1行目横1列に書き並べて、テーブル形式で保存します。テーブル名はShikakuとして保存します。保存したExcelシートはOneDrive上の任意の場所に保存をして下さい。

Power Appsでキャンパスアプリを作成する

Power Appsを起動して、キャンパスアプリを新規作成します。今回は空のアプリから携帯電話レイアウトを選択します。編集画面が表示されたら、データソースを追加します。ここではOffice365ユーザーとOneDriveに保存したExcelシートのテーブルShikakuを選択してください。

ユーザー検索機能を作成する

Micosoft 365ユーザーを検索して、ギャラリーに結果を表示する仕組みを作成します。下図の(1)では検索用の入力フォームとして「挿入」から「テキスト入力」を追加。(2)では検索用の「ボタン」を挿入して、押した時のアクションをプロパティOnSelectに設定します。まずは下記内容をOnSelectに張り付けて動作を確認してみて下さい。

ClearCollect(EmpList,Office365ユーザー.SearchUser({searchTerm:TextInput1.Text,top:10}))

ClearCollectでEmpListという名前のコレクションを作成して、検索したユーザーをその中にセットします。Micosoft 365ユーザーの情報を取得するには「Office365ユーザー.SearchUser」を使用します。フォームに入力されたテキストでユーザーを検索し、topで設定した数のデータを取得しています。

(3)で「挿入」から「ギャラリー」を追加し、EmpListをセットします。(4)でギャラリーに「挿入」から「ラベル」を追加して、プロパティTextにThisItemで列DisplayNameを指定すればユーザー名が表示されます。

資格情報をギャラリーに表示する

ユーザーを選択すると、そのユーザーの資格情報を表示する仕組みを作成します。ユーザーを選択したときのアクションを設定するため、ギャラリーにアイコン「>」を追加します。プロパティOnSelectは下記内容を設定してください。

ClearCollect(ShikakuList,Filter(Shikaku,Mail=ThisItem.Mail));

(1)では、ClearCollectで資格情報をセットするためのコレクションShikakuListを作成します。Excelテーブルの資格情報を、ギャラリーで選択したユーザーのメールアドレスで取得しています。(2)では、新規にギャラリーを追加して、ShikakuListの内容をセットしています。セットした資格情報を表示するには、ユーザー情報と同じく、ラベルを追加してThisItemでShikakuテーブルの列を指定します。例えば資格名ならば ThisItem.ShikakuName と設定します。これが出来れば資格情報の表示部分は完成です。

新規登録画面を作成する

新規登録をするためにScreen2という画面を作成しておきます。続いて、下図(1)のようにScreen1に「新規登録」と名前をつけたボタンを追加し、押した時のアクションとしてNavigate関数を設定します。 (2)では(2)と同様に「検索に戻る」ボタンを設定しています。

(3)は「登録」ボタンを押した時のアクションです。Screen2に新規登録用のフォームが縦に並んでいるのがわかると思います。項目名はラベル、入力フォームは「テキスト入力」のコントロールを追加して作成します。日付入力の場合は「日付の選択」というコントロールが用意されていて、カレンダーから入力できます。

入力フォームの内容をExcelテーブルに登録するには、Patch関数を使用します。書き方は下図を参考にして下さい。保存先をShikakuと設定し、Defaultsを指定することで新規登録が可能となります。どの列にどのフォームの値を登録するかを指定するには{}の中に設定を書きます。例えば資格区分を登録する場合はShikakuKbn:TextInput2.Textと書きます。

ShikakuKbnはShikakuテーブルの列名、TextInput2は入力テキストのコントロール名です。複数の列を登録するにはカンマ区切りで続けて書き足します。

グラフを表示する

最後にグラフを表示してみましょう。グラフを表示するためにScreen3という画面を追加します。それぞれの画面に、下図のようにNavigate関数を使ったボタンを設定し、ボタンで行き来が出来るように設定をします。

「グラフ」ボタンのNavigateアクションに、コレクションを作成する処理を追記します。まずは下記内容を追記します。作成するコレクション名をList1_1としてShikakuテーブルに登録されている資格区分をグルーピングしてセットします。

ClearCollect(List1_1,Distinct(Shikaku,ShikakuKbn));

続いてList1_2というコレクションを作成します。追記する内容は下記をコピーして貼り付けてみて下さい。資格区分ごとの件数をカウントして、その値が入った列を追加してセットしています。

ClearCollect(List1_2,
AddColumns(List1_1,"Cnt1",
CountIf(Shikaku,
ShikakuKbn=List1_1[@Result])));

グラフを挿入する

先程作成したコレクションList12の内容を円グラフで表示します。「挿入」から「円グラフ」を選択して画面に張り付けてみて下さい。最初はサンプルのグラフが表示されていますので、PieChart1のプロパティItemsをList12に変更します。下図のような円グラフが表示されていれば完成です。グラフの色は変更をすることが出来ます。

円グラフが表示できたら、他のグラフにもトライしてみましょう。下図は資格名の件数をカウントしてコレクションを作成し、その内容を棒グラフで表示しています。

以上で、アプリは完成です。Micosoft 365ユーザーを使って資格情報を管理するアプリはいかがでしたでしょうか。同じ仕組みを使って項目の名称を変更するだけで、スキル管理アプリも作成できますし、成績や業務経歴などを管理するアプリも作れそうです。いろいろと応用しやすい仕組みだと思いますので、ぜひ他の管理アプリの作成にもトライしてみて下さい。

著者プロフィール

三島正裕


1978年島根県生まれ。ディーアイエスソリューション株式会社所属。クラウドサービスを中心としたシステム提案やアプリケーション開発をする傍ら現在はマイクロソフト製品の活用事例「Office 365徹底活用コラム」を自社サイトで執筆中。