タグ別アーカイブ: Power Automate

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へ