タグ別アーカイブ: Power Automate

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へ

OUTLOOKの予定表から指定したイベントの開始時刻を一覧で取得する

【Power Automateを使用し、予定表から指定文字を件名に含むイベントの開始時刻をエクセルに一覧化します】

OUTLOOKの予定表はフォーマットを変更できないため、件名で一覧化できないのが難点ですね

ただ、Power Automateの「イベントの取得」アクションを使えば簡単に指定した内容を一覧化できます

今回はポイントだけ解説させて頂きます

ポイント

イベントの取得

イベントの取得アクションを使えば、予定表の内容/イベントを一覧で取得することができます

フィルタークエリ

取得するイベントはフィルタークエリを使用して絞り込むことができます

フィルタークエリは特殊な指定方法を使用する点に注意してください

=:eq(equalの略)

~以上(>=):ge(greater than equalの略)

~以下(<=):le(less than equalの略)

今回は2つ絞り込みを行います

contains(subject,’PA’) and ②(start/dateTime ge ‘2023-02-01’ and start/dateTime le ‘2023-02-20’)

①containsとsubjectを組み合わせることで、件名に「PA」の文字を含むイベントを抽出します

②start/dateTimeを指定することで対象イベントの日付を指定します

繰り返し処理:Applyt to each

イベントの取得アクションで取得したイベントの開始時刻は、「タイムゾーンの変換」アクションにて繰り返し変換します

加えて「表に行を追加」アクションにて既存のテーブルに「件名」と「変換後の時間」を繰り返し追加します

上記の一連の処理により「PA」の文字を含みつつ、2023年2月1日から20日までの間のイベントをエクセルに抽出できます

注意

定期的なイベントなどを抽出する場合には「イベントのカレンダービューの取得(V3)」を使用してください

<まとめ>

今回はイベントの取得アクションを使用して、予定表から指定文字を含む件名のイベントを抽出しました

今回は抽出した内容はエクセルに出力しましたが、「変数/文字列変数に追加」を使用する方法もあります

「件名」と「変換後の時間」を繰り返し追加した変数はメールで送付します

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

にほんブログ村

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

OneDriveのフォルダ内の全てのファイル・シートを自動変換する

今回はクラウド上のエクセルファイル内で使える、オフィススクリプト(旧VBA)とPower Automateの組み合わせで自動化処理を行います

やりたい事

OneDriveのフォルダに入れた「すべて」のエクセルファイルの「すべて」のシートを、事前に決められた内容に従って変換処理を行うことです

上の画像では、B2セルの①フォント文字を強調、②背景の色を黄色に、の2種類の変換が行われています

この①②の処理をすべてのファイル、すべてのシートで行います

ポイント

読者の皆様の中には、エクセルの記録マクロを使用した方が多くいらっしゃると思います

今回はエクセルマクロのクラウド版、オフィススクリプトで記録した内容を修正して活用します

修正した内容は、Power Automate/クラウド版RPAで動かします

Power AutomateでOneDriveのあるフォルダから全てのファイルの内容を取得し、エクセルファイルのみを選別して前述のオフィススクリプトを動かします

オフィススクリプト

記録操作

オフィススクリプトは「自動化」のタブから行います

自動化のタブをクリックすると「操作を記録」が行えるようになります

「操作を記録」を押した後に①フォント文字を強調、②背景の色を黄色、を行い「停止」を押します

「停止」を押すと、記録されたコードが「編集」から見れるようになります

コードで注目して頂きたいのは2つの点です

一つ目は「波括弧」です

{と}の間にB2セルを選択した処理が2つ書かれています

特に注目して頂きたいのが2点目です

こちらの「let」です

こちらはプログラミングの「変数」と同じ役割をします

「workbook.getActiveWorksheet()」すなわちファイル内の「アクティブ=選択・処理しているシート/単数」を「selectedSheet」に当てはめています

ですので、次に続くコードはselectedSheetすなわち「選択・処理しているシート/単数」 の 「getRange(“B2”)=B2セルの内容」 「getFormat=書式」 の 「getFont=フォント」 を 「setBold(true)=太くする」になります

次はこのletで設定する変数と、変数を使用していたコードの内容を変更します

コードの変更

この時点では、letで設定する「selectedSheet」は選択されているシートのみが対象になります

こちらを次のように変更します

「workbook.getWorksheets()」とすることで、ファイル内の全てのシート(sがつく複数形)にします

そして、次に取得したシートの全てに前述の①②の処理が行えるように修正を行います

要は繰り返し処理を行うのですが、繰り返し処理の構文*は次の通りとなります

*こちらのページのコレクションの箇所になります

for(let 変数2 of 変数1){

・繰り返し処理する内容1

・繰り返し処理する内容2

}

こちらの内容は英語の「All of ~」と同じになります

All of ~とすることで~の内容の全てが対象になります

この仕組みと同じです

ですので、letで取得したSheetsの全ての各シート:Sheetを変数2として設定します

ここで、では「Sheets」で設定した内容と「Sheet」の内容とは何が違うのか?と疑問に思われる方もいらっしゃると思います

対象は同じですが、Sheetsの方は複数形で全体そのものを指しています

一方、Sheetの方はあくまで全体の構成要素の一つ一つを指します

では、コードの修正の最後として「selectedSheet」を「Sheet」に変更します

こちらは「Ctrl+H」によって一気に変更することも可能です

コードの修正が完成したらコードの保存を行い、名称(allSheets)を付けます

Power Automate

Power Automateでは、フォルダ内にある全てのファイルを取得しつつ、各ファイルに対してオフィススクリプトを実行します

Power Automateではシナリオを実行するトリガー(起動条件*)をまず最初に選ぶのですが、今回は「インスタントクラウドフロー」すなわち手動でトリガーを選択します

*メールが届いた時、〇時に起動などを本来は選択できます

次にフロー名を付けて「手動でフローをトリガーします」を選択します

次の画面にて新しいステップを追加します

そして「OneDrive」を検索します

次にOneDrive関連のアクションから「フォルダー内のファイルリスト」を選択します

「フォルダー内のファイルのリスト」のアクションでは、該当のフォルダを設定します

この「フォルダー内のファイルのリスト」アクションにより、該当フォルダ内のファイルが一覧になります

ファイルの一覧は後述する「ID」という形で次のアクションに受け渡します

これで2つアクションが設定できました

次は「スクリプト(オフィススクリプト)の実行」アクションを設定します

スクリプトの実行アクションでは、前述のIDを指定します

上のGIF画像では、ファイル欄にIDを設定した途端に「Apply to each」というものが適用されています

これはeach/それぞれのファイルにスクリプトを実行するという意味になります

スクリプトは前述の「allSheets」を選択します

付け加えてスクリプトを実行するファイルは、拡張子が「.xlsx」に限定できるようにします

この限定作業には「コントロール」から「条件」を使用します

次に展開する画面で実際の条件を指定します

条件を設定したら、「スクリプトの実行」アクションは「はい」の下に移動します

これで「フォルダーから全てのファイルを取得」⇒「拡張子が.xlsxのファイルにてスクリプトを実行」のシナリオが完成しました

<まとめ>

今回はオフィススクリプトとPower Automateを組み合わせ、フォルダ内のエクセルファイルの全てのシートを変更する方法を解説しました

これは従来のVBAやRPAでは行えない処理です

クラウドの醍醐味がある処理だと思います

ぜひ試してみてください

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

にほんブログ村

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

【クラウド活用】Power BIのデータセットの内容をOneDriveのエクセルに自動転記

Power BIで作成した内容をエクセルで検証したい、もしくはエクセル活用したいというケースも多いと思います

しかも、クラウド上にて利用できるととても便利です

今回はPower BI Desktopからクラウドに「発行」した内容を、OneDriveのエクセルにPower Automateを利用して自動転記する仕組みを解説します

ポイント

Power Automate内で、対象となるデータセットを指定した上でDaxクエリを書くのがポイントです

基本的にはクエリの中身は、後述するようにPower BI DeskTop内で作成し、コピーするのが無難です

クエリの準備

クエリを作成するのに何をしたらいいかわからないかたは、基本的には「SummarizeColumns」関数を使うところから始めるのがよいと思います

SummrizeColumns関数により、必要な対象列を指定します

クエリのコピー

Power BI Desktopで作成したDAX式は、前述のようにPower Automateのアクションにコピーします

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

ただ、EVALUATEと宣言するのを忘れないでください

クエリの出力内容の処理

クエリの出力内容はデータ操作のアクションで処理します

その後に、エクセルに転記します

転記内容は関数で前処理を行っておきます

<まとめ>

今回はPower Automateによりクラウド上のデータセットから、OneDriveのエクセルに転記する方法を解説しました

クラウドでデータを連携できると、データ活用の効率があがるので、ぜひご利用頂きたいと思います

尚、今回の仕組みだとPower Automateのフローを動かすとOneDrive上には、自動的にデータ行が追加されていきます

シナリオによっては、重複が起こらないようにデータを削除しておく必要があるかと思います

その時には、クエリを実行する前のフローに対して、繰り返しエクセル行を削除しておくフローを追加する必要があります

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

にほんブログ村

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

Power Queryをクラウドで活用する方法~Power Automate使用~

【Power QueryをOneDriveなどのクラウドのエクセルでうまく活用する方法を解説します!】

クラウドがビジネスの主戦場になってきた今、Power Queryをクラウドでうまく活用できないか?という声を最近聞くようになりました

「Power Apps/Dataverse」「Power Automate」をうまく使用すれば、Power Queryをクラウドでも有効活用できます

ポイント

Dataverse

Dataverseでテーブルを作成する際、データソースにエクセルを指定するとPower Queryを使用した、データフローが作成されます

つまり、クラウド上のエクセルを触るわけではないですが、Power AppsではエクセルをデータソースにしてPower Queryを使用できます

Power Automate

Power Automateはクラウドで使用するRPAです

Power Automateでデータフロー/Power Queryを使用して作成したテーブルを、OneDrive上に転記することができます

ですので、Power Apps/DataVersexPower Auttomeの組み合わせをすれば、クラウド上でPower Queryを活用できます

データフローの作成

まずはテーブル画面からインポートを指定します

次にデータソースを「Excelブック」で指定します

データソースを指定したら、OneDrive内のファイルを指定します

次に取得元のテーブルを指定します

ここからはPower Queryエディターが立ち上がります

エクセルでPower Queryエディターを操作する場合は、クエリを作成後、読み込み処理を行います

Dataverseの場合には、読み込みではなく、既存のテーブルへのマッピング(列の割り当て)を行います

ただし、作成済みの既存のテーブルにマッピングするのではなく、全く新しくテーブルを作成する場合には「新しいテーブルに読み込む」を指定すればOKです

ちなみに「読み込まない」を指定して、データフロー上だけでテーブルを使用することもできます

Power Automate

こちらでは、要点を抜粋して記事を書かせて頂きます

データフローを更新するには、「データフローを更新する」アクションを使用します

データフローを更新した後に、OneDrive上にデータフローで更新したテーブルの内容をコピーするには、まずは「行を一覧にする」アクションを使用します

一覧にしたテーブルの各行は、繰り返し、OneDrive上のエクセルに追加します

<まとめ>

今回は、クラウド上でPower Queryを活用する方法を解説しました

Power AppsではPower Queryエディターを使用できるのでとても便利です

今回の記事ではPower Automateに関しては、要点を抜粋して記事を書かせて頂きました

実際には、使用したい内容に合わせて調整が必要です

例えば、データフローを更新すると、自動的にデータがテーブルに追加されます

ですので、時には、テーブルを削除するという対処方法が必要な時もあります

後、データフローを更新した際に、待ち時間を設定する必要も時にはあるかと思いますので、この点を意識しておく必要があります

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

にほんブログ村

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

POWER POINTのスライドを作成するように手軽にアプリ作成~クラウドフロー連携~

【Power Platformの1つ、Power Appsを習得して、DXの主役になろう!】

今回は前回記事で作成したタスク管理アプリにクラウドフロー/Power Automateを連携して、データを追加・更新したことをTeamsに投稿できるようにしましょう

クラウドフロー/Power Automate

数種類のクラウドサービスを組み合わせて自動化を行うRPAです

Power AutomateはPower Platformの1つです

クラウドフローではデスクトップで動くRPAと違い、トリガーという概念がとても重要になります

デスクトップは主にボタンを押したら動きますが、クラウドフローの場合は違います

例えば「メールが届いた」「Teamsで投稿があった」などをトリガーにして動きます

今回は簡単な内容ですが、クラウドフローがどんなものかを感じて頂けたら幸いです

Power AppsとPower Automateの連携

今回は、Power Appsで更新ボタンを押したら、Teamsの指定チャネル内で追加・更新があった旨を投稿します

その際、Power Apps内で作成した「タスク名」をPower Automateに渡し、Teams内の投稿内容に含めます

Power Apps

上の画像で黄色く印をつけた箇所/DataCardValue5はタスク「衣装準備」が格納された場所です

こちらに格納されたタスク名を「Power Automate連携」というPower Automate内のフローに渡します

Power Automate内では、受け取ったタスク名をTeamsに投稿します

Power Automate

Power Automateフロー作成

まずはPower Automateを開きます

*Officeのライセンスによっては使えないケースがあります

Power Automateが開いたら、画面左の「作成」を選択します

ここで、必要に応じて手動でトリガーを走らせる「インスタントクラウドフロー」を選択します

ここでフロー名を入力した後に、トリガーとしてPower Appsを選択し、画面右の作成をクリックします

次に開いた画面では次のような状態になっています

ここから新しいステップを追加します

追加するのは「変数の初期化」というステップなので、変数を検索しておきます

変数関連のステップが複数表示されますので「変数を初期化する」を選択します

「変数を初期化する」ステップでは3つ設定します(名前、種類、値)

変数を初期化するステップでは、Power Appsから渡された「タスク」を受け取りますので、名前は「タスク」、種類は「文字列」を設定します

では値はどうするか?、Power Automateでは「動的なコンテンツ」という仕組みがあります

動的なコンテンツの仕組みで値に「Power Appsで確認」を設定します

実際に値が設定されると「変数を初期化する_値」という表示になります

これで、Power Appsから受け取った「タスク」がPower Automateの箱に入りました

最後にTeamsへの投稿を設定します

再び「新しいステップ」をクリックします

次に「Microsoft Teams」をクリックします

するとTeams関連のステップが複数表示されます

複数表示されたステップの中から「チャットまたはチャネルでメッセージを投稿する」を選択します

このステップは右側の▼マークをクリックし、候補を表示しながら設定を行っていきます

最後のメッセージにはPower Appsから受け取ったタスクを組み込みます

こちらのタスクは動的なコンテンツで設定します

Power Appsでの設定

Power Appsでは、まずは「EditScreeen1」を選択します

タスク一覧が表示されますので、「更新ボタン」をクリックしましょう

画面左のプロパティを「OnSelect」に変更すると、データの更新を行うSubmit関数が設定されているのが分かります

*SubmitForm(EditForm1)でEditForm1の内容でデータを更新します

こちらにPower Automateとの連携内容を組み込みます

画面上から「アクション」⇒「Power Automate」と順にクリックします

すると作成してあるPower Automateのフロー名が複数表示されますので、先ほど作成したフロー名を指定します

すると、数式バーに選択したフロー名+Run関数が設定されます

このままではエラーになりますので、Power Automateに渡すタスクを格納できるようにします

タスクは「DataCardValue5」に格納されているので、次のようにRun関数を設定します

これでPower Automateとの連携は完成しました

肝心のSubmit関数も忘れず設定しておきましょう

<まとめ>

今回はPower AppsとPower Automateを連携して、データ更新内容をTeamsに投稿しました

意外と直感的に操作できるのを実感して頂けたと思います

今回の記事ではPower Automateは簡単にしか紹介していませんが、別な記事で詳細に解説を行いたいと思います

1点だけPower Automateに関する注意点があります

Power Automateはクラウドフローですので、各クラウドと接続ができていないと動きません

接続を確認するには、こちらで確認できます

「・・・」をクリックするとマイコネクションに接続状況が表示されます

必要に応じて新しい接続の追加(サイインイン)を行ってください

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

にほんブログ村

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