はじめに
以前の記事でTeamsから有給休暇情報をスケジュール登録、Teamsへメンション投稿するアプリをPowerAppsで作成しました。
上記2つのタスクに加えて休暇の申請もTeamsからできればよいなと考えています。
今回はPleasanter(プリザンター)で作られた管理サイトへ申請すると仮定してTeamsから休暇申請の登録をできるようにしてみたいと思います。
Pleasanter(プリザンター)とは
技術的な知識がなくても簡単に業務アプリを作成できるノーコード/ローコードのツールです。
オープンソースで提供されているので、初期費用なしで構築ができます。
標準でさまざまな機能のテンプレートが用意されており、また高度なカスタマイズも可能です。
プリザンター|OSSのノーコード・ローコード開発ツール
仕様
• Pleasanterに休暇情報を登録するサイトを作成する。
○以下の情報を登録する。
・所属部署
・氏名
・休暇の種類
・休暇する日
• 前回作成したPowerAutomateのフローにPleasanterへ休暇情報を登録する処理を追加する。
• 前回作成したPowerAppsからボタン押下でPowerAutomateのフローを呼び出す。
実装
1.Pleasanterに休暇情報を登録するサイトを作成する
※ Pleasanterは今回はあらかじめAzureの仮想マシンに構築しています、ローカルのPCやAzureのApp Serviceなどに構築することもできます。
1-1.テーブルの作成
今回はテンプレートを使用します。
トップ画面から左一番上の追加(+マークの部分)をクリックして「人事・総務」タブから「休暇届」を選択して「作成」をクリックします。
トップ画面に休暇届のテーブルができました。
1-2.項目を設定する
テーブルに登録したい情報の項目を設定します。
休暇届テーブルを開き、左メニューの「管理」配下の「テーブルの管理」をクリックします。
まず「エディタ」タブを開き、必要な項目を設定します。
選択肢一覧から「説明A」と「説明B」(テキストボックス)、「分類D」(選択リスト)、「日付A」(日付選択)を有効化し、それぞれ名称を変更します。
- 「説明A」:所属部署
- 「説明B」:氏名
- 「分類D」:休暇区分
- 「日付A」:休暇取得日時
休暇区分は選択肢を設定するため、IDはキーにするため残しておき、残りの不要な項目は無効化します。
次に「一覧」タブを開き、「エディタ」タブと同様に設定します。
一覧では更新者と更新日時も表示するようにしておきます。
設定が終わったら「更新」ボタンをクリックします。
試しにデータを登録します。
一覧画面の状態から左一番上の追加(+マークの部分)をクリックすると編集画面になります。
データを入力して「作成」をクリックします。
これでPleasanter側の設定は完了です。
2.PowerAutomateのフローにPleasanterへの休暇情報の登録処理を追加する
2-1.休暇登録処理
Office 365からユーザーの所属部署、氏名を取得してPowerAppsから渡された休暇日付の値とともにAPIでPleasanterへ登録します。
スコープの中で変数の初期化はできないため、最初にスコープの外で所属部署、氏名、日付の変数を初期化します。
初期化時の値はすべて変数で空にしておきます。
Office 365ユーザーコネクタの「マイプロフィールの取得(V2)」を使ってユーザー(操作者)の情報を取得します。
次に、最初に用意した変数へ値を入れていきます。日付はPowerAppsから渡された休暇日付から時間を省いた値を入れます。
HTTPコネクタを使ってPleasanterへ登録を行います。
URLは以下を設定します。
http://{サーバー名}/api/items/{サイトID}/create
サイトIDはPleasanterの休暇届一覧のURLに記載されている数字を入れます。
今回は「サーバー名/items/1/index」となっているので、サイトIDは1となります。
Body内のApiKeyはPleasanterの左側メニューからユーザー配下の「API設定」→「作成」で取得したものを設定します。
ClassHash、DateHash、DescriptionHashにはPleasanterへ登録する値を設定します。
(「イベント名」はPowerAppsから渡された「休暇種別」の値)
失敗した場合はPowerAppsのコネクタを使用してPowerAppsに処理結果が失敗したことを伝えます。
結果
終わりに
Power AppsとPower Automateを使ってTeamsからPleasanter製の管理サイトへ登録ができるようになりました。
今回は登録のみですが、Pleasanter側の作り次第でその後の申請登録処理もできそうだと思いました。