Power Apps 教えてAkiraせんせー!⑭
@akira_365🐟さんの講習14回目が終了しました!最終回でした🎊
前回 Teamsにアダプティブカードが送信され、日報を記述、アプリに登録するところまで確認しました。
まだ気になることがありますよね~
13回目はこちら
Power Automate での条件分岐
「⽇報作成のリマインド」で困ること
平日の定時前に必ず アダプティブカード が届くということは、午後から休みを取ったとしても、早めに日報を記述していたとしも通知されるということです。
余計な通知がされないように、その日に⽇報を書いた時のであれば、16:45には⽇報リマインドを送らない、というのがベストです。
ユーザーや投稿日時を指定して、アダプティブカードの投稿を制限します。
クリップボード
前回作成した「アダプティブカードを投稿して応答を待機する」「項⽬の作成」フローの前にアクションを追加していくのですが、フローをテストするたびにアダプティブカードが送られてし まいます😧
チャット欄が大変なことになりそうです…いちいち止めるのもストレス…
🐟Power Automate の特徴として、現時点(2022/11)では BreakPointのように、フローの処理を途中で止める処理がありません
では、これまたプレビューなので稀に上手くいかないこともあるようですが、⼀度「どこかに保管しておく」という方法で進めます。
アダプティブカードを投稿して応答を待機する」「項⽬の作成」フローの三点リーダーの一番上にある クリップボードにコピー(プレビュー)をクリックします。
2つのアクションをクリップボードにコピーしたら、それぞれのアクションを三点リーダーから 削除 コマンドで削除します。
一旦、Recurrence のみになるので、ここにクリップボードから追加をする方法も試してみます。
新しいステップ→自分のクリップボード を選択していくと、先ほどコピーしたアクションが表示されます。
そこから戻したいアクションをクリックするとフローへ格納されます。
🙋♀️クリップボードの追加方法が確認できたので Recurrence のみにしておく
本日の日報を Filter して取得する
条件により、アダプティブカードを送るか送らないかという設定をします。休みだろうが、すでに日報を書いていようが、毎回16:45にカードが届くというのは、ユーザーからするとアナウンスにもリマインドにもならないです😨
ますは、SharePoint の TblReport を確認してみます。
リストの 登録者 が自分で、登録日時 が今日の日付であれば、アダプティブカードを送らないという条件にします。
🐟16:45 に SharePoint の TblReport 内にどのような情報があるのか
新しいステップ→SharePoint コネクタ→複数の項⽬の取得 を追加します。
サイトのアドレス(レポートがあるサイト)とリスト名(TblReport)を指定します。
ここで保存をし、一度テストを行います。(エラーが出ますが続けます)
このアクションではどのようなことをしているのか確認します。
出力欄の中に「クリックしてダウンロードします」という項目があるので
クリックし中身を見てみます。
すると、すごいものが出てくる🙃・・・ので戸惑いますが、日報内容が複数書かれています。
Title で検索をしてみると、日報の Title を取ってくれているようです。
情報量が多すぎるので、作成者と作成⽇時で Filter したいと思います。
条件で検索するフィルタークエリーが可能ですので、先ほど作成した 複数の項⽬の取得 の 詳細オプションを表⽰する をクリックします。
さらに項⽬が展開されますので、こちらで Filter をかけていきます。
フィルタークエリ という欄へ、ルールに沿って(クエリ形式)で設定を行います。
該当する列、演算子で等しいという意味の eq 、検索文字列を指定して次のように入力してみます。
Title eq ‘GW での過ごし方’
※文字列はシングルクォーテーションで囲む
保存して今の状態をテストしてみます。(エラーはもう出ません)
出力欄の中の「クリックしてダウンロードします」という項目をクリックし中身を見てみます。
Title が『GW での過ごし⽅』という項⽬のみ抜き出すことができました。 このように項⽬と値を⽐べ Filter することが可能です。
⽐較演算⼦
頭文字を取って使われる。
リストの列名を正確に取得する
Power Automate のフィルタークエリでは、「内部名」と呼ばれる名前が使⽤されます。
日報の元になっている列名を調べてみましょう。 TblReport のリストの右上の⻭⾞マークをクリックして、リストの設定 をクリックします。
今回、絞り込みたいのは「登録日時」と「登録者」です。
詳細画⾯で「登録日時」と「登録者」をクリックして、リンク先の URL バーの末尾のイコールの後が内部名となるので、それぞれ確認しておきます。
🐟日本語で作成したりExcelから取りこんだ列名はきちんと読み込まれない
addHours関数、utcNow関数
就業時間が8時間としたら、日報が自分の名前で今の時間より8時間前の間に書かれているものを取得したい。
「作成⽇時 ≧ 今の時間マイナス8時間」かつ
「作成者のメールアドレス = ⾃分のアドレス」
まずは、列名 Created を比べてみます。
Created のほうが大きいか等しい場合、比べるものは・・・関数を使います。
動的なコンテンツの追加→式 を選択します。
次のような式を作成し、OK をクリックします。
このような表示になるはずです。
使⽤している式の概要は addHours(「⽇時」,「⾜したい時間数」,「書式」) 「書式」の引数の部分に、設定した書式で返されます。
utcNow() は、今の時間を取ってくる関数なので、マイナス8時間を足すということで、フローのアクションを実⾏した時間となります。
ここで保存とテストを行います。
出力欄の中の「クリックしてダウンロードします」という項目をクリックし中身を見てみます。
8時間以内に日報を書いていないので、ここまでは成功です😚
あとは、複数人が日報を書いているという設定で、作成者のメールアドレスと自分のメールアドレスをイコールで結び、自分が作成したものを取得する条件も加えます。
Created ge 'addHours(utcNow(),-8,'yyyy-MM-ddTHH:mm:ssZ')' and Author/EMail eq '自分のメールアドレス'
条件分岐
8時間以内に自分が書いた日報を取得できた or 取得できなかったかという条件でフィルターをかけます。
フローの続きに、新しいステップ→コントロール→条件 を選択します。
「はいの場合」の アクションの追加 をクリックして、今回の内容の最初にクリップボード に格納した 2 種類のアクションを追加します。
続いて、条件内の 値の選択→動的なコンテンツの追加 をクリックし、式を
入力します。
まず、Empty()と⼊⼒し()の中にカーソルを置き、動的なコンテンツ から value を選択します。
empty 関数を使用しているのですが、配列に要素が1つ以上、存在するか調べる関数ですので、なければ True を返し、存在すれば False で返します。
8時間以内に自分が日報を書いている場合は、何も処理をしなくても良いため、空の場合が True という設定です。
これで、8時間以内に自分が日報を書かれていない場合のみ、アダプティブカードが送られるというフローが出来上がりました🎉
試してみます!
日報を書いた後に、テストを行いましたが、結果で False が返されました!
すごいですね🤩ちゃんと自分が書いた日報の有無を確認してくれました!
以上で、講習はすべて終了しました😆
当初は、簡単なアプリをゆっくり作っていくのかなと思っていたのですが、難しくてまだ理解できていないところも多いですが、たくさんの知識が詰まった、素敵なアプリの作成方法を教えていただきました✨
Power Automateも講習に取り入れていただきありがとうございました!
最初はついていけるのか、どうなることかと不安になったりもしましたが、少しずつ慣れていき、だんだんと楽しめるようになっていきました。
本当に毎回、何度も中断させてしまい申し訳なかったのですが、ちゃんと「すいませーん」と聞けたことで、みなさんと一緒にゴールできたので良しとさせていただきたいです💦
講習が完結したことは寂しいですが、これからも相談し合える仲間ができたことはとても嬉しいです😊
Akira先生、皆様お疲れさまでした✨ありがとうございました🥰
そしてこれからもよろしくお願いしまーす!!
この記事が気に入ったらサポートをしてみませんか?