こんにちは、あんこ先生です。
Planner、他部署から直接タスク登録させたいことありませんか?
たとえば、案件の引継や備品・消耗品の発注依頼などがあります。
でもアクセス権がないとプランを開けないし、勝手に編集されても困りますよね。
アクセス権を与えず、でもタスク登録のみ行わせたい、そんなことできるの?
はい、結構かんたんにできました。
そこで、今回はPowerAutomateを使ってアクセス権がなくてもplannerにタスクを登録する方法を手取り足取り紹介します。
いままでよりも作成難度は高まりますが、動かすだけならほぼコピペでいけます。
ぜひ、チャレンジしてみてください。
以下、別記事で紹介したアプリに機能を追加する形で解説します。
まだ読まれていない、アプリを作成されていない場合は先に下記記事を読んでください。
Contents
アクセス権のないプランにタスクを登録する方法
アクセス権について
PowerAppsから好きなようにタスクの参照や登録ができるわけではありません。
plannerならそのプランに対して共有(アクセス権)されたユーザーのみが利用できます。
そのため、アクセス権を持たないユーザーがプランにアクセスしようとすると否認されます。
つまり、アプリを経由してもタスクを登録することができません。
アクセス権の壁を回避する方法
PowerApps単体の機能ではそのユーザーが持つアクセス権を超えての要求は通せません。
そこで、PowerAutomateのフローを経由してアクセス権を持つ代理権限で処理を行わせます。
注意点として、フローの所有者が該当プランのアクセス権を持っていることが前提となります。
応用すれば、アクセス権のないSharePointリストに書き込むこともできますね。
今回はこの仕組みを利用して、アクセス権のないプランにタスクを登録させます。
フローの作成│PowerAutomate
フローって作るの難しくないの?ちゃんと動くの?って心配になりますよね。
安心してください。上図のとおり、たった2ステップで完了します。
今回は、1件ずつ登録する形で解説します。
図解すると次の通りです。
PowerAppsからフローに値を渡す│PowerApps(V2)
はじめにトリガー(フローの開始条件)として、PowerAppsから実行します。
その際、タスク登録に必要な情報をテキストでフローに渡します。
フローから代理権限でタスクを登録│タスクを作成する
次に、渡された情報を適切な場所に当てはめてタスクを登録します。
代理権限(フローの作成者)で実行する設定は、のちほど紹介します。
フローがやってることはたったこれだけです。
このくらいならできそうだと思いませんか?
PowerAppsからフローを作成する
フローの作成は、PowerAppsから直接行えます。
アクションタブのフローを新規作成するの順にクリックします。
たくさんテンプレートが出てきますが、今回のはかんたんなので一から作った方が早いです。
トリガーを作成する
作成画面が表示されたら、トリガーを作り直すために表示されているトリガーを削除します。
三点リーダから削除を押せばすぐ消えます。
削除が完了するとコネクタ選択画面が表示されるので、PowerAppsを選びます。
そしてトリガー選択画面になったら下側のPowerApps(V2)を選びます。
するとどのデータを受け取るか指定する画面になります。
+入力の追加を6回、すべてテキストを追加します。
名前は後工程で使うためわかりやすいものが良いです。
サンプルはPlannerコネクタの列名を流用しています。
それぞれがタスクのどの項目とつながっているかを矢印で示してみました。
グループID(groupId)は空でも問題なく動作するので、気にしないでください。
以上でトリガーの作成は終了です。
操作を作成する
実際にタスクに登録する操作を作成します。
+新しいステップを押して、Planner ▶ タスクを作成するを選びます。
Plannerで検索するとすぐ出てきますよ。
タスクを作成するの画面が表示されると、どの項目に何の値を当てはめるか設定します。
たくさん選択肢がでてきますが、一番下のカスタム値の入力を選びます。
右側にどの値を当てはめるか候補が表示されるので、先ほどのトリガーで設定したものをひとつずつ選んでいきます。
すべて当てはめると上図のようになります。
今回、割り当ては行いません。空欄のままで大丈夫です。
これで操作の作成は完了です。
最後にフローの名前を付けます。
左上のところを押せば変更できるので、わかりやすい名前にしておきましょう。
保存してPowerAppsに戻ります。
フローが追加されていればOKです。
フローの埋め込み│PowerApps
ボタンを押すとフローが実行されるようにする
適当なボタンのOnSelectに次のようなコードを記述します。
フロー名.Run(フローに渡す値)
フローによっては()内は空でも動きます。
今回はタスクを登録するために必要なデータを渡すため、次のように記載しています。
権限ないプランにタスク登録するフロー.Run(
//グループID groupId 空でもOK
"",
//プランID planId
drpCode.Selected.PlanId,
//バケットID bucketId
drpCode.Selected.BucketId,
//タスク名
"数量"&drpValue.Selected.Value,
//開始日 startDateTime
Text(Today(),"yyyy-mm-dd")&"T00:00:00",
//期限日 dueDateTime
Text(dteStandardDelivery.SelectedDate,"yyyy-mm-dd")&"T00:00:00"
)
値のみ渡すので列名は不要です。
ただし、記述した順にトリガーで指定した枠に値が埋め込まれます。
今回の場合、ひとつめがgroupId、ふたつめはplanIdといった具合です。
順番を間違えないようにしましょう。
日付データのテキスト変換
フローに渡す値はすべてテキスト型です。
そのため、フローで使える形で渡す必要があります。
一応フローでも変換できますが、PowerAppsでやった方がかんたんです。
ここまで追われば、あとは実行してPlannerにタスクが登録されるか確認してみましょう。
フローを代理権限で実行させる
一通り動くようになったのですが、まだアクセス権がユーザーに依存しています。
上図の手順で実行時の接続をフローの作成者にします。
これでだれが実行してもアクセス権を持ったフローの作成者が代行します。
もちろんフローの作成者がアクセス権を持っていないと動きませんよ。
アクセス権のないプランにタスクを登録する方法のまとめ
今回は以前作成したネットショップっぽいUIのアプリに機能を追加する形で紹介しました。
アクセス権の問題は解決しますが、このやり方では1件ずつのタスク登録になります。
そのため、次は複数まとめてタスクを登録できるようフローにJSON形式で値を渡すようにしてみたいと思います。
コメントを残す