カテゴリー別アーカイブ: クラウド活用

Formsに回答数の上限に達したら、Power Automateからメールをする方法

【Sharepointリストを使用し、簡単いFormsに回答数の上限を設定する方法を解説します!】

回答を集めるのに便利なFormsですが、回答数の上限を設定することはできません

 今回の記事では、回答数が事前に設定した上限数を超えたら取り急ぎPower Automateにてメールを送る対応について解説を行いたいと思います

しかも、かなり簡単な方法で行えるようにしたいと思います

ポイント

Sharepointリスト

事前にSharepointリストを作成しておき、質問別に上限数を設定しておくのが最大のポイントです

回答数についてもこちらのSharepointリストで管理できるようにします

変数

上記のSharepointリストの項目については、Power Automateのフロー内では変数を通じて管理を行います

・質問別上限数

・質問別回答数

後、メール内で「どの質問」が上限数を超えたかを管理するための変数を設定しておきます


Formsデータの取得

Formsの回答情報を取得するには、次の画像にある2つのアクションを組み合わせて使います

返信先の取得

返信先の宛先を取得するには次のアクション/ユーザープロフィールの取得(V2)を使用します

このアクションを使用すると、Formsの回答者のメールアドレスを基にして回答者の様々な情報を取得できます

例えば、「姓」「名前」とかが取得できます。こちらは後で回答者にメールを送る際に使用します

上限数・回答数の取得及び更新

ポイントで前述したように、変数は回答別に設定しておきます

変数を通じて、Sharepointリストの回答数を取得・更新します

Sharepointリストから回答数を取得するには「複数の項目の取得」アクションを使用し、変数に反映します

これは上限数も同様です

そして、Formsで回答があった質問の回答数を更新するには条件アクションの中で「empty関数」を使用します

指定した質問に回答があった場合は「empty」でないので、falseになります

こちらの「empty関数」の中にはFormsで取得した動的コンテンツを設定します

この「false」の場合に、回答数を1つ増やしてSharepointリストに反映します

*「変数の値を増やす」アクションを使用

Sharepointリストへの反映には「項目の更新」アクションを使用します

そして、ポイントで前述したように「どの質問」が上限数を超えたかを変数に設定します

こちらは「条件」アクションで上限数と回答数を比較して条件式を設定します

「はい」の場合は「文字列変数に追加」アクションで該当の質問名を設定します

メールの送信

フローの最後には、回答数が上限数を超えた場合にはメールが送れるように「条件」と「メールの送信」アクションを組み合わせて設定します

画像に alt 属性が指定されていません。ファイル名: image-12-644x496.png

「条件」アクションは「OR」で設定します

「メールの送信」アクション内では前述の「ユーザープロフィールの取得(V2)」で取得した内容を使用します

これで回答数が上限を超えた場合に、回答者にメールが送信されます

<まとめ>

今回はSharepointリストに上限数と回答数を設定した上で、Formsの回答数が上限数を超えた場合にメールをする方法を解説しました

記事内では触れませんでしたが、各種設定は質問別に行うのもポイントになります

こちらは質問数が多いとかなり手間になるので「スコープ」アクションを使用することをオススメします

「スコープ」アクションを使用すると、複数のアクションを一括で扱えるようになります

「スコープ」アクションをコピーしながら使うと、フローの作成自体が楽になります

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power Automateのフローがもし失敗したら~エラー対策~

【フローが失敗しても、気づかないまま・そんなことがないように対策を打ちましょう!】

エラー対策はPower Automateのようなローコードの開発でも重要です

Power Automateの場合は、トリガーが「ボタンを押す」以外のケースがほとんどなのでエラーが起こったことに気づきにくいです

今回は簡単な方法でエラー発生時に通知が来るようにしましょう!

ポイント

アクションの右上の三点リーダをクリックすると「実行条件の構成」というのが選べるのをご存じでしょうか?

実行条件の構成では、前ステップがエラーの場合のみアクションを動かすように設定を行うことができます

1段階目⇒単独実行

まず最初に、敢えてエラーを出すアクションを作成しましょう

データ操作コネクターの「作成」アクションで1÷0を指定します

数式はdivを使用します

割り算した時に分母が0なので必ずエラーになります

ここでポイントで解説した「実行条件の構成」を調整したフローを追加します

ここでは「メール通知を受け取る」アクションを使用します

このアクションは該当フローを作成したアカウントにメールを送信します

こちらのアクションの実行の構成を調整し、一つ前の「作成」アクションがエラーになった場合はメールの通知を行うようにします

これで「作成」アクションがエラーになったら「メール通知を受け取る」アクションが実行されます

逆に作成アクションをエラーにならないように中身を変えたらどうなるでしょうか?

この場合は、そもそもアクションが実行されません

2段階目⇒並列実行

前述のフローだと、エラーが発生しなければアクションは実行されません

ただ大抵の場合は、エラーが発生しない場合は後続処理を実行する必要があるケースが大半のはずです

その場合は「並列分岐の追加」を行います

これで、エラーが発生しない場合の後続処理を続けることができます

3段階目ー対象を複数アクションに拡大

前述の内容は、特定のアクションにてエラーが発生した場合のみエラー対策が実行されます

実際のフローではどこのアクションでエラーが発生するか分かりません

エラー対策のアクションを拡大する場合は「スコープ」アクションを使用します

こちらのアクションでは複数のアクションをまとめて活用できます

このスコープアクションを「実行条件の構成」の対象にすれば、スコープの中のどれか一つがエラーになるとエラー対策として設定したアクションが実行されます

エラー内容を知りたい場合

通知内容の中に「エラー内容」を入れたい場合は「actions関数」を使用します

上の画像のように()の中にエラー検知対象のアクションの名前を設定することにより、エラーの中身が取得できます

こちらが「メール通知を受け取る」アクションで通知された中身です

こちらだと情報が多すぎるという場合には、下の画像の黄色の部分に絞ってエラーの中身を抽出することができます

前述のactions関数に?を2つ続けます

actions(‘スコープ’)?[‘error’]?[‘message’]

これによりエラーメッセージの中身を絞り込むことができます

<まとめ>

今回は「実行条件の構成」を軸にPower Automateにおけるエラー対策について解説を行いました

Power Automateはローコードとはいえ、システム開発にエラー対策はつきものです

常にエラー対策は意識しておきましょう

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

MicrosoftのFormsにアップロードされた画像をForms外で共有する

【Forms内の回答以外でも、画像を共有するには2つの方法があります】

MicrosoftのFormsは瞬時に多くの人の情報を集められるのでとても便利です。但し、アップロードされた画像をForms外で共有するにはどうしたらいいか?

意外と頭を悩ませている人も多いのではないでしょうか?

こちらは2つ方法があります

1.FormsからSharepointサイトのドキュメントに共有

2.Power Automateにてメールを添付する

1.FormsからSharepointサイトのドキュメントに共有

Formsの画面下に「マイグループ」という欄があります

こちらのマイグループにはSharepointサイトが並びます

1つ選んでクリックするとグループフォームが作成できます

このグループフォームで画像をアップロードするだけで、該当のShaerpointサイトのドキュメントに画像が直接アップロードされます

この時、Shaerpointサイトのドキュメント内にフォルダ内には該当フォーム専用のフォルダが作成されています

こちらのフォルダ内にも、Forms内にアップロードされた画像がアップロードされます

2.Power Automateにてメールを添付する

Formsにアップロードされた画像をメールにて添付するフローは少し複雑になります

ポイントとしては2つあります

①Forms内にアップロードされた画像はOneDrive内に保存される

②メールを添付するには、ファイルの名前とファイルコンテンツ(中身)が別々に必要

こちらの2つのポイントをまずは押さえておきましょう

Formsの回答を取得

「新しい応答が送信されるとき」と「応答の詳細を取得する」この2つのアクションでFormsの回答を取得します

添付ファイルの名前を取得

添付ファイルの名前を取得するには「データ操作」コネクタを使用します

データ操作コネクタ内の「JSONの解析」アクションを使用するのですが、こちらはコード/スキーマが必要になってきます

「コンテンツ」にFormsの画像での回答を動的コンテンツで設定後、スキーマの欄に一旦「””」を入力してフローを動かします

これでスキーマが取得できます

上記の画像の出力欄/本文の「name」の欄が一番欲しいファイル名です

こちらの本文の内容を前述のスキーマにコピーします

この「JSONの解析」アクションで取得した内容から、「作成」アクションを通じて前述の「name」を抽出します

関数を使用するのですが、関数の中身は以下となります

first(body(‘JSON_の解析’)).name

これでファイル名が抽出できます

メールの送信

これでファイル名が取得できました

今度はファイルの中身/ファイルコンテンツを取得します

ファイルコンテンツの取得には「パスによるファイルコンテンツの取得」アクションを使用します

こちらはOneDrive内の「アプリ/Microsoft Forms」フォルダから取得します

前述したようにOneDriveにFormsのアップロード画像が保存されているのがポイントです

一度、ファイルパスは実際にOneDriveに保存されているファイルを設定し、動的コンテンツの「作成」アクションから出力された内容で置き換えます

これでファイル名とファイルコンテンツが揃ったので、メール作成アクションを設定します

前述したように、ファイル名とファイルコンテンツを分けて設定するのがポイントです

これでFormsに画像がアップロードされたらメールが行われます

<まとめ>

今回はMicrosoftのForms内でアップロードされた画像をForms外で共有する方法を2つ解説しました

解説した2つの方法のうち、2つ目のメールする方法は中々小難しいです

ここで、画像のアップロードが複数ある場合はどうするか?

という疑問を持った方もいらっしゃると思います

この場合は、アレイ.配列を使用します

配列に「ファイル名」「ファイルコンテンツ」を複数格納します

使用するアクションも通常の「変数の設定」ではなく「配列変数に追加」を使用しますし、文法もなかなか間違いやすいので注意が必要です

そして、一番分かりにくいのがメールの添付です

こちらはモードを切り替える必要があります

この画像を複数添付したメールを送付する方法はなかなか難解です

機会があれば詳細に解説したいです

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Sharepointリストにエクセルファイルから一括でデータを大量追加する

【Power Automateを使えば、Sharepointリストを一気に操作することができます!】

Sharepointoリストはエクセルのように大量にデータを追加できない?そう思われている方も多くいらっしゃることと思います

実はPower Automate/クラウドフローを使えば簡単にエクセルから大量データを追加できます

但し、注意点も多いです

エクセルからPower Automateを使ってSharepointリストに流す方法を知っていても、256行で処理が止まってしまったという経験をされた方も多いと思います

行数の制限を回避する方法も後ほど解説したいと思います

自動追加フロー

準備するもの

追加するデータが含まれたエクセルファイルをSharepointのドキュメント内、もしくはOneDrive内に用意してください

但し、必ずテーブル化を行っておいてください

名前は後で参照するので、分かりやすいものが良いです

デスクトップの場合と違い、テーブル化の場合はショートカットキー/Ctrl+Tが使えないので挿入タブから操作を行ってください

Power Automateフロー

トリガー

「手動でフローをトリガーする」をトリガーにし、いつでもフローを起動できるようにします

エクセルファイルからデータ取得

「表内に存在する行を一覧表示」アクションにて追加するデータを取得します

アクション内では、ファイルとテーブルを指定します

リストへのデータ追加

取得したエクセルデータのリストへの追加は、Sharepointコネクタの「項目の作成」アクションで行います

こちらのアクションにて、取得したエクセルデータを列単位で指定します

下の画像のように、客期コードにカーソルを置くと現れる動的コンテンツから実際の指定は行います

一つでも動的コンテンツを指定すると、自動的に繰り返し処理/Apply to eachが適用されます

つまり、このアクションではN行エクセルデータを取得したらN回項目の作成を繰り返し、リストに追加を行っていきます

注意点

実は処理行数に制限があり、エクセルの追加行数が256行より多い場合でも処理が「256」で止まります

この場合は設定の変更で上限数を増やすことができます

改ページを「オン」にし、行数を増やします

理論上は10万行までは指定できるようです

但し、制限を外せてもかなりパフォーマンスは落ちるケースがありますのでご注意を

(参考)256行制限のまま大量の行数に対応するフロー

最後に、1度にエクセルから取得する行数を「256」に絞りながら処理するフローを紹介します

下の図のように、うまく取得位置をスキップさせながら制限行数の範囲内で処理を繰り返していきます

スキップ数の箇所は変数にして可変にするのもポイントです

こちらの変数は繰り返し処理/Do Untilの中で、繰り返し256行を増やしていきます

Do until内では別途変数(プール値:trueで初期化)を使用し、falseになるまで処理を継続するようにします

こちらの終了判定する変数は、処理の残り必要行数が256未満の時にfalseにします

処理の残り必要行数は「length関数」を使用して取得します

length(body(‘表内に存在する行を一覧表示’)?[‘value’])

残りの行数を取得し、256行未満であれば最後の「項目作成」を行い、変数をfalseに変えます

<まとめ>

今回はPower Automateを使用してエクセルのテーブルからまとめてSharepointリストにデータを追加する方法を解説しました

フロー自体は簡単なのですが、行数が増えてくると扱える行数に制限がかかったりするのが厄介ですので、そちらの対策も解説させて頂きました

最後に、

フローの実行が長引くと「フローがタイムアウト・・・」と出るケースがあります

但し、下の画面/実行履歴を確認すると実際にはまだ動いていることがありますので注意が必要です

この疑似的なものも含めてタイムアウトを防ぐために、下の設定を変えることで対策が行えます

この設定内に「期間」を設定する箇所があります

以下に記載例も示しておきます
PT1M ー1分

PT1H-1時間

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power Appsでエクセルを超える~列方向が可変のクロス表を作成

【工夫すれば、使い慣れたエクセルのクロス表をPower Apps内で使用が可能です】

エクセルは言わずと知れた、メールと並んで多くの方に利用されているツールです。

本当に素晴らしい機能が満載です

このブログもExcellent仕事術となっています

エクセルの特徴的な使い方の一つが、列方向に可変なクロス表による管理です

上のような画像のクロス表にて、列方向に「2023/08/05、2023/08/06・・・」と増やしていく使い方は良く行われていると思います

これはエクセルの表計算の仕組みを有効活用した手法です

但し、この表は確かに見やすくて便利なのですが、表が大規模になってくると幾つか問題が出てきます

・処理がセル単位になり、行列一括で処理が行えない

・一目で分かるようにシート別に区切って管理するので、データの一元管理が行えないケースもある

ですので、このクロス表の作業をシステム化しましょうという場合もあります

これはこれで問題があります

このクロス表のシステム化は結構、ハードルが高いのです

普段何気なく使用しているフィルター作業や並べ替えも縦方向ですよね?

システムは基本的にはデータの列を固定した上で、縦に並べるようにできています

エクセル以外のソフトだと、実用的なものをそれなりの低価格で作成するのはかなり困難だと言わざる負えません

エクセルのままであれば、特殊なVBAの使い方をすれば自動化はそれなりに可能ですが、様々な問題があります

何故かというと、エクセルは本来はあくまで表計算ソフトであり、Accessなどのデータベースソフトとは違うからです

私もプログラマーとして活動する中で、この問題には度々直面してきました

特殊な在庫管理業務など、この列数可変のクロス表でないと行えない作業が現実として世の中にあるからです

システム化を行わなくてはならない場合は、前述のようにエクセルとAccessを組み合わせるなどの特殊なVBAの使い方で乗り切ってきました

ただ、作成に時間もかかり作業画面も思うようには作成できませんでした

仕組みが複雑で、他の方に説明が難しいという問題もありました

ところが、Power Appsの登場で状況が変わりました

このクロスの列方向が可変の表を、Sharepointリストと組み合わせながら比較的、簡単に作成できるようになりました

下のGIF画像はPower Appsの画面です

横軸の「日付」はSharepointリストと連動しています

2023/08/11が最終日付でしたが、「2023/08/12」を追加すると列方向に追加されます

上記のGIF画像では一見、分かりずらいかもしれませんが、連番の動きに注目して頂ければと思います

最初、12番は空欄です

Sharepointリストに2023/08/12を追加すると12番に日付が追加されます

当然、下のGIF画像のように表の中身を新規に追加・更新もできます

そして、

通常のエクセル処理でもできない列フィルターも行えます

2023/08/04を指定すると、それ以降の日付のみに表示が変わります
エクセルVBAにて列フィルターを行うには、列を非表示にするという複雑な処理を行う必要がありました

ですので、非表示にしたものを再表示するなどの処理も必要です

後で詳細は紹介しますが、Power Appsであれば列フィルターも比較的に簡単に行えます

何より、Power Appsによりクラウド上で業務が完結できるのがいいです

この記事でPower Appsの魅力及び可能性を伝えられたら幸いです

それでは、まずは最初にポイントを大まかに2つ紹介します

1つ目はIndex関数、2つ目はキーを組み合わせる複合キーです

ポイント

Index関数

エクセルのIndex関数をご存じでしょうか?

Index関数とは指定範囲から、指定位置のセルの値を抽出します

INDEX(範囲, 行番号, [列番号])

Index関数を使えると、抽出するセル位置を可変にできます

下の画像であれば、指定範囲の1行目1列目~2行目2列目をそれぞれ抽出し、

下の画像であれば、指定範囲の2行目2列目~3行目3列目をそれぞれ抽出します

今回のPower AppsではこのIndex関数を、行列の表示数を固定のまま有効活用します

複合キー

下の画像をご覧ください

行列の見出しを組み合わせて複合キーを作成しています

この複合キーにより、表の中身の位置を示すことができます

例えば、範囲の1行目1列目の「8」は「A-2023/08/01の8」と表示することができます

この複合キーの活用により、行列双方向の表を列数固定の形式に並べ直すことができます

この複合キーの仕組みは実際には「引当テーブル」の中で有効活用します

準備するもの

Sharepointリストを3つ用意します

行方向用(行見出し)

行方向に並べる商品データを用意します

列方向用(列見出し)

こちらは日付データを用意します

中身用

こちらは複合キーを交えた引当データを用意します

*CTが中身の個数になります

複合キーはーなどの記号を入れると後で分かりやすくなります

それではいよいよ、Power Appsのキャンバスの作成に入ります

インデックス及びインデックスを動かす仕組み

前述のように、今回はIndex関数を使用します

まずはIndex関数が参照するインデックス(1,2,3・・・)とインデックスを動かす仕組みを作成します

ここで言うインデックスとは、具体的にはこちらのことになります

そして、インデックスを動かす仕組みはこちらの三角マークになります

インデックスを動かす各三角マークの「OnSelect」プロパティには、変数を設定するSet関数を埋め込みます

上の画像の下向きの矢印であれば、変数:num_Rowを1つ繰り上げて設定します

*上向き、左向きであれば1つ繰り下げます

この変数:num_Rowはインデックスの1番目/Label1_NOに反映されます

Label1_NO

但し、Max関数を使用することで1よりも小さくならないようにします

そして、インデックスの2番目/Label2_NOと3番目/Label3_NOはインデックスの1番目に1もしくは2を足した値を表示します

Label2_NOのTEXTプロパティ

こちらのインデックス/Labelを参照して、行列双方向で見出し用の値を抽出します

インデックス数/Labelは表示数を行列ともに固定にします

Index関数による見出し作成

上記のインデックス/Labelを基にして、Sharepointリストから見出し用の値を抽出します

繰り返しになりますが、こちらはIndex関数を使用します

Index関数の中身には2つ設定します

Index(テーブル,位置)

但し、上記のままだとレコードを抽出するだけなので、「.」を使用して抽出する列名を指定します

上記は行方向ですが、列方向も同じです

行方向、列方向ともに表示数は、インデックス数と同様に固定にします

クロス表の中身

クロス表の中身として、行列のインデックス数分の表示を行う仕組みを作成します

こちらは1:現状の中身を示す仕組みと2:中身を追加・もしくは更新する仕組みの2つに分かれます

1:現状の中身を示す仕組み

こちらは複合キーを作成して、SharepointリストからVLOOKUP関数を使用して値を抽出します

ポイントで前述した仕組みをまた活用します

画像に alt 属性が指定されていません。ファイル名: image-8.png

Power Appsの場合はセルの組み合わせではなく、次の画像のようにLabelの組み合わせ、VLOOKUP関数で値をSharepointリストから抽出します

LookUp(T_引当,
    fukugoukey=
     Label1_PRODUCTID.Text & “-” & Label1_DAYCOLUMN.Text
    ).CT

つまり、こちらのSharepointリストから、Labelを組み合わせた複合キーが一致する行を抜き出し、更に個数を表す列/CTを抽出して表示できるようにします

2:中身を追加・もしくは更新する仕組み

こちらはTextInputボックス内にIf関数を使い、新規にSharepointリストに追加する内容と更新を行う内容に区分します

If関数は「OnChange」プロパティに組み込み、入力があれば自動的にSharepointリストに反映されるようにします

条件式にはCountIf関数を使い、既に複合キーがSharepointリストに存在するかどうかを判定できるようにします

If
(
CountIf(T_引当,fukugoukey=Label1_PRODUCTID.Text &”-” & Label1_DAYCOLUMN.Text)=0,

もし、0の場合は「Patch関数」でSharepointリストに追加、0以外の場合は「CountIf関数」でSharepointリストの該当行を更新します

以下は式全体です

———————————————–

If
(
CountIf(T_引当,fukugoukey=Label1_PRODUCTID.Text &”-” & Label1_DAYCOLUMN.Text)=0,
Patch(T_引当,Defaults(T_引当),{fukugoukey:(Label1_PRODUCTID.Text &”-” & Label1_DAYCOLUMN.Text),                   ProductID:Label1_PRODUCTID.Text,
                 DAY:DateValue(Label1_DAYCOLUMN.Text),
                 CT:Value(TextInput11.Text)
                 }
),
UpdateIf(
T_引当,
fukugoukey=(Label1_PRODUCTID.Text &”-” & Label1_DAYCOLUMN.Text),
{
CT:Value(TextInput11.Text)
}
)
);
Reset(TextInput11)


最後にReset関数で、入力した値を消去しておきます

列フィルターを行う場合

エクセルとは違い、列フィルターは1つ関数を付け足すだけで行えます

前述のIndex関数の中にFILTER関数を使用し、第一引数のテーブルの絞り込みを行います

見出しを増やす場合

話を単純にするために、行列1つとして話を進めてきました

Power Appsであれば見出しを増やすことも簡単にできます

見出しを増やす場合は、Labelを追加し、VLOOKUP関数やIndex関数を使用してSharepointリストの値を抽出します

上の画像では、Index関数を使用していますが適時、適した方を選べば大丈夫です

<まとめ>

今回は、本来はシステム化が困難なエクセルの列数が可変な表を、Power Appsで実現する方法を解説しました

ポイントは行列の表示数を固定し、Index関数と複合キーをうまく活用することです

上記のポイントを押さえれば、比較的簡単に作成が行えます

何より、クラウド上で業務が完結するのがいいです

これからは、Power Appsでどこまで業務を変えられるか?しかも、簡単に作成できるか?に挑戦していきたいと思います

但し、今回は話をシンプルにするために省略しましたが、実際には「委任問題」など問題への対策なども必要なことも最後にお伝えしておきます

ちなみに先日、Power Appsでコネクト4というゲームも作成してみました

結構、簡単にできたので、他のゲーム作成も試してみたいです

Power Apps、本当にこれから面白くなってきます

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power Automateでフィルタークエリを使いこなす

【今回は便利だけど何気に難解なフィルタークエリを数パターン解説します】

エクセルでフィルターを使う機会は多いと思います。Power Automateでもフィルターは「フィルタークエリ」という形で使うことができます。ただ文法等が何気に分かりずらいので、今回は陥りやすいパターンになるべく絞って解説します

特にSharepointリストの内部名の指定やシングルクオーテーションの指定は何気に間違えやすいので注意が必要です

///2023年7月19日追加記事///

フィルタークエリに関しては、今現在、次の画像のような機能が活用できます

この機能であれば、フィルタークエリを通常の条件式と同じように扱えます

細かな文法の知識を駆使する必要はなく、直感的な操作で設定が行えます

この機能を活用するには、画面右上の以下の箇所を操作する必要があります

上の画像にて、黄色の箇所をクリックするとこの機能の「オン・オフ」が指定できます

あくまで実験的な機能という風に記されていますので、この点は注意が必要です

//////

使用データ

使用するデータは以下の画像の内容です

等しい:eq(equal)

例えば「名前」の列が「木塚 信之」の行を抽出したい場合には、次のようにeqを使用します

この時「シングルクオーテーション:’」を忘れないようにしてください(数値の場合は別扱い)

このフィルタークエリを実行すると次のように結果が得られます

尚、上記のフィルタークエリは「表内に存在する行を一覧表示」アクション内で使用しています

等しくない:ne(not equal)

次のようにフィルタークエリを書いてみます

名前が「木塚 信之」以外の行が出力されます

以上:ge(greater than equal)

ここからはSharepointリストをデータソースにして「複数の項目の取得」アクション内でフィルタークエリを実行します

~以上を抽出するには「ge」を使用します

では、次のようにフィルタークエリを書いてみます

そうするとエラーになります

これは「年齢」というSharepointリスト内の内部名を指定できていないからです

まずはSharepointリストの「リストの設定」画面にて、内部名をURLから取得します

該当箇所は「=」の次からの文字列になります

これで内部名を取得できたので、フィルタークエリを修正してみます

この時の出力は次の通りとなります

尚、内部名が「_X・・・」となるときがあります

上記で使用していたSharepointリストはエクセルから作成しました

「問合せ日」という列を加えると内部名が次の通りになります

この場合、フィルタークエリの書き方に工夫が必要です

内部名の前に「OData_」という文字を加える必要があります

なお、比較の演算子には「以上:ge」以外にも次のような内容があります

以下:le

~超:gt

未満:lt

startswith他

「文字列が特定の文字から始まる」という指定を行いたい場合はstartswithを使用します

出力される内容は次の通りとなります

「substringof」により文字列内の特定の文字が含まれる行を抽出することもできます

引数が「startswith」と逆なので注意が必要です

and条件やor条件

「且つ」や「又は」を指定することもできます

<まとめ>

今回は便利なフィルタークエリですが、陥りやすいパターンを中心に解説させて頂きました

尚、下の画像のような日付の関数などを使用した場合のシングルクオーテーションなども抜けやすいので注意していきましょう

ぜひフィルタークエリを有効活用してクラウドでの仕事を充実させていきましょう!

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power Automateから送るメール本文を人間が送るように装飾する方法

【ロボットから送るメールのフォントを変えたり、URLのリンクを埋め込んだりしてみよう】

RPAから自動にメールを送れるようにするのはいいけど「フォントの太さなども含めてメリハリを付けて送りたい」という時にはちゃんと方法があります

今回はフォントの変更を中心に解説を行います

準備

メールを送信するアクションにて、黄色の箇所に</>というマークがあります

そちらをクリックするとHTMLにて指定してメールを送れるようになります

フォントのサイズ

フォントのサイズは以下の文法で指定します

<font size=xx>の後の文字が指定のサイズの文字になります

</font>で指定が解除されます

フォントの色

フォントの色は<font color=xxx>で指定します

フォントの強調

フォントを太字にするには<b>で指定します

解除は</b>で指定します

フォントの種類

フォントの種類は<font face=xxx>で指定します

URLのリンク

フォントではないですが、良く聞かれるので紹介します

URL及び埋め込む文字は次の文法で指定します

<a HREF = URL>文字列</a>

上の事例では「Yahoo」の文字列にURLが埋め込まれます

<まとめ>

今回はPower Automateでメールを送る時にメール本文のフォントなどを変更する方法を解説しました

実はPower automate desktopでも同じ方法でフォントなどを変更できます

但し、Power automate desktopの場合は上記の画像の黄色の箇所をオンにしてください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

Power BIで抽出したデータをエクセルに転記するボタンを作成する

【今回はボタン1つでPower BIの内容を既存のエクセルファイルに追加できるようにします】

Power BIはエクセルからデータを取得してダッシュボードを作成できます。実は、Power BI内で整理したデータをエクセルにエクスポートし直すこともできます

上記の画像の「エクセル出力」ボタンを押すと、OneDrive内にダッシュボードに表示されているデータが追加されます

準備すること

事前にOneDrive、もしくはSharepointにエクセルファイルを準備してください

列名は事前に固定する必要があります

そして、Power Automateから操作ができるようにテーブル化をお願いします

Power BI DesktopにPower Automateの追加

まずビジュアルのビルドの下にある「Power Automate」のボタンをクリックします

すると以下のような内容がページに追加されます

ここでPower Automateで出力するデータフィールドが指定できるようになります

Power Automateフローの設定

データフィールドを設定したら、三点リーダーから編集をクリックします

次に開いた画面では「新規」をクリックします

内容はインスタントクラウドフローを選択します

ここから実際にフローを作成するのですが、既にこちらの画像のアクションはデフォルトで設定されてあります

次にエクセルコネクタから「表に行を追加」アクションを追加します

「表に行を追加」アクションでは、まず事前設定したテーブル名までを設定します

後は、事前にPower BIからの抽出項目として設定した内容をそれぞれ設定します

「表に行を追加」アクションの設定が終わると「Apply to each」が自動的に設定されます

そしたら保存適用をクリックし、ボタンがページ内にできていることを確認します

発行処理

Power Automateフローの作成が終わり、ボタンを追加したら発行処理を行い、クラウド上でレポートを開きます

これでPower BIからエクセルにエクスポートできるようになります

<まとめ>

今回はPower BIからエクセルにエクスポートする仕組みを解説しました

紹介した内容はとにかくとても簡単です

Power Platformには簡単な事例が詰まっていることがよく分かります

継続的に今回のような有用なネタを投稿していきます

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

管理IDを2段構成で管理できるようにする~Power AppsxPower Automatex~

【エクセルでは簡単に行えなかったことが、Power Platformでは簡単に行えます】

作業を行う際にID管理表をエクセルで作成している方も多いと思います

今回はPower Appsを起点にして、次のような2段構成の管理IDを簡単に発行、管理できるようにします

①230001-②0001

①は新規に発行するIDとなり、発行時に②は自動的に「0001」となります

②は①のIDに紐づく内容で修正があった時に「0001⇒0002・・・」と繰り上がっています

上記のGIF画像では、左上の「NO」が空欄なので、新規にIDを発行しています

上記のGIF画像では、既存の「230008-0001」の最初の6桁をNO欄に入力しているので「0002」が採番されています

今回の記事では、詳細な内容(特にPower Automateのフロー)が多いのでポイントを絞り解説していきます

ポイント

IDの2段構成を実現するために、管理用のSharepointリストを作成しておきます

Sharepointリスト連携

SharepointリストにはNewとOldを記載する列を作成しておきます

こうすることで、IDの構成に応じて最後のIDを抽出しやすくなります

Power Automate連携

Power Automateのフローは「新規用」と「既存用」の2つを作成し、IF式で切り分けて動かせるようにします

Set(myID,TextInput_IN.Text);If(IsBlank(myID),Set(ID,flowNew.Run()),Set(ID,flowOld.Run(myID)))

上記は採番ボタンの「Onselect」の欄の数式になります

Power Apps画面左上のNO欄に入力がある場合とそうでない場合(IsBlankがfalse、true)に分けて、動かすフローを切り分けられるようなっています

Power Automateの起動

前述のように、Power Appsから新規の採番か既存の採番かにより動かすフローを切り分けます

そして、既存の採番の場合にはPower Automateのフローに「既存6桁」を渡します

以下は再び採番ボタンの数式です

Set(A:myID,TextInput_IN.Text);If(IsBlank(B:myID),Set(ID,flowNew.Run()),Set(ID,flowOld.Run(C:myID)))

まずAでSet関数で変数:myIDにNO欄の内容を設定します

もし、BにてIDが空欄の場合には「flowNew」を起動/Runします

そうでない場合は「flowOld」に変数:myIDを渡して起動/Runします

flowOldでは受け取った変数:myIDを基に採番を行います

Power Automateフローの実際

既存

Power Appsを受け取った変数:myID=IDの左側6桁を基にして左側6桁の最終発行情報を取得します

最終発行情報の取得には「複数の項目の取得」アクションを使用します

事前にPower Appsから受け取ったIDの左側6桁は、substring関数を使用して6桁の変数「digit6」に変換しておきます

そして、フィルタークエリを以下のように指定することで「digit6」に一致するものをSharepointリストより抽出します

*ApplyNOは管理IDのことです

抽出といっても最終のものを抽出するだけですので、ID列の最後の行を抽出します

最後は抽出したIDに「1」をadd関数で足します

新規

新規の場合は、Sharepointoリストの「New」のものの中から最終のものを抽出します

例えば、冒頭のGIF画像では「New」の最後「230007」を抽出して「1」を足す形になります

SharepointリストでのID作成及びPower Appsでの受け取り

Power Automateで作成したIDはSharepointリストに「項目の作成」アクションを使用して書き込みます

更にIDはPower Appsに返します

上の画像では変数:ID_FromPAとして値を返しています

値を返されたPower Apps側では更に受け取った値を変数に格納し直します

以下は再び採番ボタンの数式です

Set(myID,TextInput_IN.Text);If(IsBlank(myID),Set(ID,flowNew.Run()),Set(ID,flowOld.Run(myID)));Refresh(ApplyNO)

上記の「Set(ID・・・」の箇所は、フローをRun/起動したことで返ってきた値を変数:IDに格納しています

注意点としては、実際に返ってきた値を表示する際には、次のように「ピリオド.」をうまく使わないと表示ができません

上記の画像ではインプットボックスに「ID.id_Frompa」を設定して、返ってきた値を表示しています

中身としてはPower Apps内で生成した変数:IDの中のPower Automateから返ってきた「id_frompa」というような込み入った表現になっています

<まとめ>

今回の記事ではSharepointリストやPower Apps、Power Automateを使用してIDを2段で管理する方法を解説しました

エクセルではVBAを使用するような内容ですが、Power Platformでは工夫すればかなり簡単に行えます

尚、今回の記事ではPower Automateのフローを細かく解説すると長くなりそうなので、詳細は割愛しました

ポイントだけ解説すると、変数を細かく分けて初期設定するのがポイントになります

上記は1例ですが、管理IDの左2桁部分や6桁部分などを宣言することで柔軟なフローが描けるようになります

例えば、左2桁を切り分けて管理することで「今年/yyyyの右2桁の採番」などの管理も柔軟に行えるようになります

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ

SharepointリストでユニークなIDを自動採番する

【Sharepointリストの隠れた便利技を活用してデータ管理の効率を組織で向上させましょう】

エクセルの代わりにSharepointのリストを使う方も多くなってきているようです

リストはPower BI、Power AppsやPower Automateなどとの相性が良く、皆で共有して使いやすいです

*Power BIでリストを取得する方法はこちらから

ただリストはエクエルの延長のアプリケーションではありません

使う画面/ビューも調整することができます

今回はこのビュー機能を活用してリストでIDを自動採番する方法を解説します

連番を採番する

この記事では客先のマスターデータを作成する想定で解説を行います

上の画像にて、客先名の追加毎に連番が自動で追加されるようにします

まずは、画面右上部の「すべてのアイテム」をクリックします

次に「現在のビューの編集」をクリックします

すると次に開いた画面では「ID」の欄にチェックが入れられるようになっています

IDの欄にチェックを入れて「OK」ボタンを押すと自動的に連番が採番されるようになります

*最初、10000・・・と表示されますがF5キーを押すと正しい表示になります

連番のカスタマイズ

連番を「A001、A002、A003・・・」などという風にカスタマイズする必要があるときにはPower Automateを使用します

まずはProductID/1行テキストを事前に追加しておきます

Power Automateのトリガーは「項目が作成されたとき」を指定します

これでリストに新たなレコードが追加された時に後続の処理が走るようになります

次のアクションでは新規に作成されたIDを「1⇒001、2⇒002・・・」という風に変換します

数値の書式設定アクションの番号に「項目が作成されたとき」アクションから取得した「ID」を指定します

フォーマットには「000」を指定します(ロケールは特に指定は必要ありません)

最後に「項目の更新」アクションでリストを更新します

上記の「ID」は新規に作成されたIDではなくて「リスト」を他のリストと識別するためのIDになります

「ProductID」の欄はAを付けてカスタマイズするために「A」の次に「数値の書式設定」アクションで変換した数字を使用します

これでIDのカスタマイズが終了です

<まとめ>

今まではエクセルを皆で共有して扱うのが定番でした

ただ、エクセルの入力ルールを作成・遵守してもらうのが大変でした

その点、リストであればルールは厳格にコントロールしやすくなります

しかも今回の記事で紹介した方法を活用すればIDを基にしてルールを厳格化することが可能です

ぜひ活用してみてください

にほんブログ村 資格ブログ ビジネススキルへ

にほんブログ村

にほんブログ村 IT技術ブログ VBAへ