PowerAutomateDesktopをExcelVBAと連携

PowerAutomateDesktopとExcelの連携の有効利用について

PowerAutomateDesktopはExcelを操作するアクションが複数あります
これらはそのアクション名を見ればおおよそ操作方法については分かるとは思います
Automate自体は処理速度がそれほど早いものでは無いので、VBAで実行できることであればそちらで行う方が圧倒的に早く処理できます

しかし、記事にあるようにAutomateと連携させることで今までVBAだけでは少し難しい処理が可能となります
・ユーザーフォームの操作を自動化
・IE以外のWebブラウザでの処理化

これらの処理はVBA単体で行うことを考えるとかなりハードルの高いものです
ですが、Automateと連携させることで驚くほど簡単に実装出来ます

VBA処理をAutomateから実行

まずAutomateからVBA処理の実行の方法を確認しておきます
操作方法は難しくありませんが、VBA処理の呼び出しで最も最初に注意しておく必要があるのが引数に引き渡せるのが「テキスト型」のみになっている点です
これは処理をすでに作成している場合に引数を設定している場合は要注意です
まあ、あまりオブジェクト等の引き渡しをトリガーになる処理に入れたりは無いとは思いますが…
VBA側で工夫すればテキスト型に限定されていたとしても、だいたい何とかなるとは思いますのでここは仕様と割り切って対応が必要な部分です

Excelのインスタンスを作成するアクション

まずは処理の作成されたExcelブックを開く必要があります
「Excelの起動」アクションから簡単に実行できます

アクションの設定画面

「Excelの起動」は次のドキュメントを開くに設定します
「ドキュメントパス」は絶対パスでファイルを指定します
「読み取り専用として開く」はオンにします
もちろん処理の内容を保存する必要がある場合はオフのままにしておく必要があります
ただ通常のExcelの開く処理と違い、すでに開かれているブックを開こうとした場合に注意のメッセージが表示されずに読み取り専用で起動されます
読み取り専用で開くことを前提としておくことで処理の安定化を図れます

残りの項目は初期設定のままで問題ありません、インスタンスの表示に関しては処理次第で変更しても良いです

プロシージャ名と引数を指定して処理を実行するアクション

処理の実行には「Excelマクロの実行」アクションを利用します

実行する処理

まずこちらが今回実行する処理です
引数に指定された文字列をメッセージ表示する処理です
分かりやすくするために引数を2つ指定しています

アクションの設定画面

アクションの設定画面の1つ目のインスタンスは先ほどExcelを開くアクションで生成された変数を指定します

「マクロ」の設定ですが、「プロシージャ名;引数1;引数2;…」のような形式で全て文字列のまま入力を行います
最初にプロシージャ名を入力しますが、プロシージャ名のみだけの指定となっていますのでモジュールは指定の必要がありません
と、いうより実際にはプロジェクト内全てを参照しているので別のモジュールに同名のプロシージャがあった場合は下記画像のエラーが発生するので注意してください

同名プロシージャが存在しているとエラーになる

とはいえ、別のモジュールでVBA上はさほど問題にならないとはいえ同じ名前のプロシージャが存在するというのはちょっと考えモノですね
動けばええやんという考えの自分ですがさすがにそれは是正した方が良いと思います

少し脱線しましたが、プロシージャ名の後に「;」(半角セミコロン)で引数を区切って入力します、複数ある場合も同形式でそのまま入力していきます

ちなみに、Automate側で数値型の変数を指定したとしてもVBAは文字列として受け取っているので問題が無いので、「”」で囲んだりする必要はありません

実行時の状態

実際に実行してみると、ブックが起動してプロシージャが実行されます
メッセージも渡した文字列がしっかり受け取っていることが分かります

ちなみに、このアクションはVBA処理が終了するまでアクションが停止する点は注意が必要です
もし、Automateで複数の処理を連続実行させたい場合はメッセージ表示などの処理は無くしておいた方が良いですね

ブックを閉じるアクション

蛇足ですが、開いたブックを閉じるには「Excelを閉じる」アクションを実行します
設定項目も生成されたExcelインスタンスの変数を指定するだけですね
ここは実際に操作してみると難しい場面ではないと思います

ユーザーフォームの操作を自動化

ユーザーフォームの操作の自動化ですが、この処理はVBAでは実装はめちゃくちゃに難しいと思います
そもそもVBAにはマウス操作すら行うことが出来ませんし、入力にしてもSendKeysメソッドでシビアなタイミング管理で実行する必要があります

そもそもこのユーザーフォームの操作を自動化する場面自体がほぼ無いかもしれません
ただ入力内容が転記レベルの単調なものであったり、フォームの作成を行ったのが自分では無くさらにその処理の全貌があまり定かではない場合が考えられます

とはいえ、基本的にユーザーフォームの操作自体も全てVBAで処理作成されているわけですから上記の様に処理の全貌が分かっていれば何とかなるかもしれませんが
やはりクリックイベントやチェンジイベントなどで連鎖的に処理が行われるのはユーザーフォームでは当たり前に行われる処理です
それらを全て単純にCallステートメントで呼び出すだけで動くとも限りません

と、前置きが長くなりましたが要はVBAではユーザーフォームの操作を行うのが困難ということです
ですが、Automateでは通常のウィンドウ同様にユーザーフォームの各コントロールを操作が可能です

コントロールの追加

まずはユーザーフォームの操作したいコントロールを登録します
Automateのウィンドウ左にある「UI要素」ボタンをクリックして、表示された画面から「UI要素の追加」ボタンをクリックします

追加の画面

追跡セッションという画面が表示されて、ユーザーフォーム上にマウスを移動させると認識するコントロールに赤枠が表示されます
この赤枠の表示された状態でCtrl+左クリックをすることで、追跡セッション画面に登録されます(画像の状態)
登録出来たら完了ボタンをクリックします

コントロールが追加された状態

これでコントロールの登録が出来ました
同じ要領で必要なコントロールを追加してください
この作業自体は後でアクションの追加時点でも可能なので、ここで追加しなくても都度追加しても大丈夫です

数が少ないうちは気になりませんが、UI要素の数が多くなると管理が大変になりますので各要素の右クリックメニューから名前の変更が可能なので多くなりそうなときは活用してください

登録内容

今回は3つのコントロールを登録しました
閉じるボタンについては作成出来るコントロールではありませんが、ウィンドウ操作が可能なためこれも自動化の対象に出来ます

今回の作成する操作
・テキストボックスに「test」と入力する
・クリアボタンをクリックしてテキストボックスの内容を消去
・フォームの閉じるボタンをクリックしてフォームを閉じる
この3つの操作をAutomateで自動操作してみます

使用するアクション

使用するアクションは2つで、テキスト入力とボタンのクリックアクションです

作成したフロー

いずれのアクションも設定自体は全く複雑なものはありません
直感的に設定可能なのでここでは割愛します

1ではテキストボックスに入力する処理を実行
2ではクリアボタンを押しています、これでテキストボックス内容が消去されます
3では閉じるボタンを押しています、これでフォームが閉じられます

実際の動きに関しては静止画では分かりづらかったので動画を作成しました
動きの気になる人は確認してみてください

フォームの自動操作

この処理において注意の必要なのが、Automateの仕様ではウィンドウのUI操作はマウスの操作も含まれるため他の作業を行いながらの処理実行は出来ません
そもそも自動化なのでしょうがないですけど

IE以外のWebブラウザでの処理化

IEの警鐘が鳴らされてから久しいですが、全くアプリの停止はありませんが
やはりIEの表示が行われないサイトであったり、IE未対応のWebシステムの出現もあり可能であればVBAでの情報収集等のWeb操作もIE以外のアプリを使えるようになると良いです

主なアプリと言えば、GoogleChromeかIEの後継であるMicrosoftEdgeなどが代表的なものと思います

しかしこれらの操作をVBAから行うには「Selenium」の導入が必要となります
ただIE操作のコードともプロパティやメソッドに違いがあったりするので
Web上からのコピペでようやくIE操作が出来たのにChromeに移行するのも大変です

そんな時にAutomateが出番となるかもしれません
もちろんVBAで操作するほどの処理速度を実現するのは不可能ですし、VBAで操作するほど細かい操作はまだAutomateは対応できません
ただこの対応に関しては、今後増加していくことは容易に想像できます

さらに、先般訳あってChromeの使用が出来なくなったのでEdgeに振り替えを行う必要があったのですがAutomateはインスタンス関係のアクションを振り替えるだけで終了しました
このメンテナンス上の優位性はすごいと感じた次第です

今回はChromeを操作して、この部品庫サイトの記事一覧のリストをExcelに取得してみたいと思います
なんせこの部品庫サイトは更新いつしたか分からんもんね

処理の流れとしては、Chromeの起動から情報の取得・Excelの起動をしてVBAに情報を引き渡してVBA処理で入力して保存終了・Chromeを終了の流れで処理化してみましょう
ちなみに、今回の記事では細かい作成要領は割愛します

まずは先にVBA処理を作成しましょう
引数にはテキスト型しか指定出来ないことは解説済みです
そして今回Automateから引き渡すテキストデータは記事一覧が改行されたテキストデータです
それを踏まえて以下のような処理を作成しました

作成した処理

今回の処理に関してはテスト処理なので画像で紹介しています
VBA処理の流れは最初に前回入力値の消去を行っています、全てA列に入力しているのでA列の入力データを消去しています
次に入力用のセルを変数に取得しています
この辺の入力処理は色々想定できるのでなんでも良いです、配列で一括入力もしようと思えば出来ますが、今回は変数セルを更新していって入力を行っていく形にしました
さすがに記事数が数万になったりすることは無いですからね、これからの人生全てを捧げても無理でしょうね、それは♪

次に引数のテキストデータを1行ごとに分割して入力するループ処理です
ここに関してはAutomateからどんなデータが引き渡されるかも事前に知っておく必要はありますが、引き渡すデータは改行されて改行コードはCrLfになっています
なのでそれをSpiritで分割して処理します

次はAutomateのフローを作成します

Web操作の開始アクション

前述しましたが、AutomateではいくつかのWebアプリを操作可能です
現状は画像の4つのアプリですね
今回はChromeを利用したいと思います

各アプリの操作前に拡張機能のインストールが必要になります

拡張機能の設定メニュー

メインメニューの「ツール」⇒「ブラウザー拡張機能」⇒任意のWebアプリを選択するとそのアプリで拡張機能のインストール画面に移行しますのでインストールを実行してください
以降はそのまま操作が可能となります

作成したフロー

今回の作成フローはこんな感じです
1はChromeを起動しています
画像のものはテスト用なのですでに起動済みのものを取得していますが処理化であれば新しく起動で良いでしょう

2行目の「Webページ上の要素の詳細を取得します」アクションで記事一覧のリストを取得しています

リスト範囲の取得

UI要素を指定してその範囲のデータを取得しますので、UI要素を追加します
画像の様にsectionタグになっている範囲がそうなのでその辺にマウスを移動させると取得可能です

取得されたデータ

Automate上での取得データは画像のようなものになっています
表示された文字列を単純なテキストデータとして取得していますね
行数値にあるように改行されたテキストデータです

3~5のアクションではこの記事前半で解説しているExcelのマクロ実行を行っています、今回の場合はデータの更新が必要になるので読み取り専用では開いていませんし、閉じるアクションでは保存するようにしています
ただ、見える必要のない処理なのでExcelのインスタンス表示はしていません

この処理ではWebアプリの操作は要素の取得のみで、Excelもインスタンスの表示が必要ない点から、処理はバックグラウンド実行が可能です
他の作業を行いながら処理を実行できるという事ですね

Automateの自動化も工夫次第でバックグラウンド処理にすることが可能なので、より有効活用が出来ると思います

処理の動きを確認出来る動画を作成しましたので動きの気になる人は確認してみてください

部品庫サイトの記事一覧のリストをExcelに取得

動画の方は動きの確認用にフローを少し編集しています
3行目のアクションをExcelの起動ではなくすでに起動済みのExcelを取得するアクションに変更してブックの閉じるアクションは無効化しています

動画の最初と最後でExcelのA列にデータが入力されていることを確認してください

そして最後にとても大切なことを1つ
この記事の例を試すことにより、部品庫サイトに高アクセスでサーバー攻撃しないでね

パスワードを取得する汎用フロー

パスワードをExcelに保存してそれを取得するフローの作成とそのフローの外部フロー化として汎用性をあげる方法について

PowerAutomateDesktopでWebアプリやサービス等を自動化するフローは、だいたい最初に想定することかもしれません
そこで重要となってくるのがログインアカウントとパスワードの取得です
基本的にはテキスト入力のアクションのプロパティに設定しても良いのですが、パスワードが定期的に変更が必要だったり、強制的に数か月経過すると変更が必要となるものもあります

そんな時にいちいちAutomateのプロパティを編集するのも面倒です
しかも1つなら大して問題にはなりませんが、これが複数あった場合かつそれも複数のフローになっていた場合は非常に面倒です

そこで利用したいのがExcelです
Excelにアカウント名とパスワードを一覧として保存しておきます
そして必要なアカウント情報を取得しに行ってそれをAutomateに入力をしてもらいます

こうすることにより、Excelファイル1つで必要なアカウント情報を一元化できかつ編集も楽になります
またセルの位置さえ変動しなければ、フローへの影響もなく
関連するフロー全てに対して有効に出来ます

さらにこの記事中ではそのフローを別フローとして保存して実行することで、あらゆるフローから汎用的に利用できるようにしています

実際に作成してみる

パスワードファイルを開く

最初のアクション追加

最初のアクションはExcelファイルを開く操作になります
Excelファイルを直接開くには「Excelの起動」アクションから行えます
このアクションをダブルクリックします

Excelの起動アクションのプロパティ設定画面

プロパティ設定を上から順番に行います

まずは起動時の動作の「Excelの起動」ですが、ここは選択肢から「次のドキュメントを開く」を指定します
これで2つ目のドキュメントパスの指定が可能となりますので、パスワードファイルをダイアログから選択してください
これでフルパスの入力が行われます

基本的に目的に対してはこの2つの設定を行えば十分ですが、さらに以下の設定も行っておきます

「インスタンスを表示する」はオフにする
セルデータが欲しいだけなので表示する意味が無いからです
後述しますが場合によってはファイルのデータ閲覧を防ぎたい場合にも有効です

「読み取り専用として開く」はオンにする
これもインスタンスを表示しないのでどちらでも良いのですが、自動化処理の場合には編集しないならなるべくこの設定を行っている方が良いですね
自動処理というのはスケジュールやなんかでいつ発生するか分からないので、編集したいときに実行されてると迷惑です

詳細項目の「パスワード」はExcelの標準機能の読み取りパスワードの文字列です
これはこのファイルにあるデータはアカウント情報やパスワード情報という観点からファイル自体にパスワードを設定して、だれでも閲覧できるようにしたくない場合に設定して、フローで開く場合にはここでパスワードを指定することになります

前述にあるようにこの閲覧制限をしたいファイルを利用する場合はインスタンス表示(Excel表示)をしない方が良いですね

最後に保存ボタンをクリックしてアクションの作成完了です

セルの値を取得する

まずはファイルの中身を先に説明します

ファイルのデータ

このように特に見栄えは全く考慮する必要もなければ、A列にアカウント名、B列にパスワードとします
別のアカウント情報は改行して入力を行っていきます
ここは別にこれと同じでなくても、データがどこにあるか分かれば問題ないです
このデータをフローに取得してもらいます

そして取得アクションの前にもう1点設定を行っておきます
それは入出力用変数の設定です

前述しましたが、このフローは別のフローから外部呼出しを可能とすることを目的にしています
なので別のフローからどのアカウント情報が欲しいかを入力変数、取得した情報を出力変数として代入する必要があるためです

変数の設定画面

Automateの画面左側上部に変数のウィンドウがあります
もしこのウィンドウが表示されていない場合は、閉じる×ボタンのすぐ下の「{x}」というボタンをクリックすると表示されます
ちなみに{x}というのはAutomateでの変数の表現となります
他にも利用可能な場面で表示されています

そのウィンドウ上部の入出力変数の範囲から+ボタンをクリックしてさらに「入力」を選択します

入力変数の設定画面

変数の設定画面が表示されます
基本的に変更の必要も無いのですが、そのままで分かりにくい場合はそれぞれの項目を任意のものに設定を行います
ちなみに、データの種類は選んだら分かりますが数値型とかは無いのでテキストで問題ありません
そもそもAutomateではあまり変数の型は意識が必要ないです

また、選べる項目に機密テキストがありますが、これはこのフロー上でも確認が不可能になる暗号化されたものに利用します
これは別途アクションが必要になるのでまた別のお話とします

最後に作成ボタンをクリックして作成を完了させます

入力変数の作成時と同様の画面で今度は出力変数の作成を行います
これがフローで取得したアカウント名とパスワードを格納して返す変数です
ここではアカウント名とパスワードの2つの出力変数の作成を行ってください

まとめて取得してリストとして1つの変数で返すことは可能ですが
このフローの目的からするとまず間違いなく呼び出し元ではアクションがそれぞれ別のアクションで変数を利用します
連続したデータであるよりは、別々の変数の方が利用しやすいです

出力変数の作成

変数名と外部名を任意に指定して作成します
ちなみに、この変数名と外部名に関しては後でフロー呼び出しの解説で説明します

変数の作成完了した状態

画像の様に入出力変数が3つ作成された状態となれば、準備完了です

アクションの選択

実際のデータの取得アクションを作成します
アクションはExcelの起動の下にある「Excelワークシートから読み取り」を使用します
ダブルクリックすると設定画面が表示されます

アクションのプロパティ設定画面

Excelインスタンスと取得は初期上のままで問題ありません
もし違っていたら画像の様に設定してください

このアクションではアカウント名を取得したいので、先頭列は「1」を指定します

次の先頭行は先ほど作成した入力変数を指定します
変数を利用する場合は、入力ボックスの右側にある変数ボタンをクリックします
画像の様に変数の選択画面が表示されますので、そこから作成した入力変数を選択します

代入先の選択

次に詳細項目内の「セルの内容をテキストとして取得」を有効にします
しなくてもほぼ問題は無いとは思いますが、アカウント名とパスワードが数値であることは無いと思います

最後に生成された変数項目内で取得したデータの格納先を指定します
初期状態ではローカル変数になっているので、変数ボタンをクリックして出力変数を指定します

最後に保存ボタンをクリックして作成完了です

2つ目の取得アクション

同手順で2つ目のパスワードを取得するアクションを作成してください
設定は画像のような形で設定します
先頭列が「2」になっていることに注意してください

パスワードファイルを閉じる

取得が出来たらパスワードファイルは閉じます

閉じるアクションの選択画面

画像の「Excelを閉じる」を使用します
これをダブルクリックしてください

Excelを閉じるアクションのプロパティ設定画面

特に設定を変更する必要はありません
保存ボタンをクリックして作成してください

フローの全体

完成すると画像のような4ステップのフローが完成します
途中の読み取りアクションでは出力変数に代入しているので特に返し値を意識する必要はありません

完成したらフローを保存してください
このフローは入力変数である引数が必要になるので動作確認は別フローで行います

フローの動作確認

別のフローを新規に作成してください

別フローの実行アクションの選択画面

別のフローを実行するアクションはフローコントロール項目内の「Desktopフローを実行」を使用します
これをダブルクリックしてください

アクションのプロパティ設定画面

先ほど作成したフローをリストから選択します
ここでは「PasGet」を選択しています

設定完了状態

フローを選択すると自動的に同期されて、入力変数が作成されたフローであれば設定画面に自動的に表示されます
ここに任意のデータを入力します

また前述にて後ほど説明するといっていました、入出力変数の外部名ですが
ここに初期状態で表示された変数名がそれに一致する事になります
なので基本的にはどちらも同じものを利用している方が分かりやすいです

作成完了状態

アクションを作成すると画像の様に1ステップのアクションが作成され、フロー変数が自動的に作成されます

呼び出し元としてはこれだけで取得フローを実行して返し値を受け取る事ができます
これを実際に実行してみます

実行後の画面

こちらが実際に実行した後の画面です
フロー変数に指定した行のアカウント名とパスワード文字列が取得されていることが確認できます
入力変数には「2」を指定したので、Excel2行目の情報が取得されています

この様に外部フローとして汎用的に取得処理を作成することで、パスワードの変更等があった場合でもフローの修正が必要なくなります
行数を変更さえしなければですが…

サブフローよりもさらに強力に汎用性を上げることの出来る外部フローの呼び出しを有効に活用しましょう

PowerAutomate Desktopについて

PowerAutomateのDesktop版のインストールについて

ついに提供開始されました
最初に書いておきますが無償提供はあくまでも無償版という形での提供になっている点には注意が必要です

正直、Web版との連携が取れないのは致命的ですが、それでもローカルな作業であれば画期的な対応が出来るようになるはずです
何よりほんの半年で無償版の提供まで行っているくらいですから、この無償版をみんなが利用するようになれば更なる機能追加も期待大です

導入も簡単です、既にWeb版で解説している管理画面からダウンロードサイトへ移動可能です

メニュー画面

作成メニューを選択して、その中から「デスクトップフロー」を選択します

起動画面

起動画面が表示されます
ここから「アプリのダウンロード」を選択してください
インストールファイルがダウンロードされます
ダウンロードファイルから、PCにインストールしてください

アカウントログイン等の初期作業を行います
こちらの作業も複雑なものはなく数ヶ所設定すれば完了です

初期表示

新しいフローを作成するには画像のボタンをクリックして作成を始めます

フローの名前設定画面

フローの名前を設定する画面が最初に表示されます
ここで名前を付けなくても、後で編集可能なためとりあえず作成をしてみます

編集画面

開いてみて分かるのは、Web版とは全く違う作成画面であることです
こちらにもなれていく必要がありますが、やはりコードの記載は全く不要で日本語で記載された各項目も難解な解読を必要としません

最初に書いた通り、トリガーの設定はありません
処理アクションを追加していきます

細かいフローの作成手順などは別の記事で解説していきますが、ここでは無償で利用できる環境を整えれれば完了です
また、このサイトでは無償版の解説を行うこととし、有償版の解説については扱いませんのでご了承ください

PowerAutomateの困った現象

PowerAutomateで作業をしていて、非常に困った現象のあれこれ

PowerAutomateでフローを作成している際に、実際に遭遇して困った現象を解説しておきます(1つ1つは小さいことで、1つの記事にするほどの内容ではないようなこと)
同じく困ってしまうことがあると思いますので注意のため、なるべく早い段階で読んでおいてほしいです
また、現象に遭遇するたびに追記していこうと思います

変数の自己参照が出来ない

変数の利用が出来ますが、その変数は自己参照が出来ません

VBAでよくあるのが、「i = i + 1」というような加算を行うような変数の更新です
これは変数「i」に代入する際に「i」を参照しています
これが自己参照です

PowerAutomateではこれが使用できません
変数の設定アクションでは、別の変数を使用する必要があります

実際上記の加算に関しては、専用のアクションがありますが
やはりVBAになれているものからすると、この自己参照が出来ないのは結構不便に感じます

もっとも単純な解決法は、2つの変数を作成することです
VBA的に記載しますと、「i = i + 1」が利用できないので
「i = i_2 + 1」と記載して加算を行う
「i_2 = i」と記載して計算結果を2つ目にも共有する
このように2つの変数を介することで、疑似的に自己参照の動きを作成できます

考えるだけで面倒ですね、なんとか自己参照できるようになってほしいものです

エラー発生時の挙動

エラー発生時は非常に面倒です

特に保存を許してくれないのが、1番のストレスです
エラーをとりあえず解決するまで保存を実行しようとしてもフローチェッカーが保存を阻んできます
これが案外面倒で、終了アクションを代入してそこでフローが終わるようにしてテストを行いたくても保存が出来ないからテスト出来ない

とりあえず全てのエラー個所にダミー値を入力していく
これが数が多いと面倒だし、何より修正前のデータを残しておきたいこともある

さらに最悪なのが、それなりに作業を進めてから誤って変数などを削除してしまってエラーになった場合です
PowerAutomateには操作を戻す機能が無いため、元に戻せません
なので新たに変数やアクションを作り直して再度設定を全て行う必要があります

これが保存後最初の操作ならまだしも、前述したようにそれなりの作業後にこの状況に陥ると前回保存時からの作業が全て吹き飛ぶため絶望的です
これで何度「やってもた・・・」と言ったか記憶に無いです、保存できてないので・・・

もう1つ面倒なのが、アクションの名前を付けづらくなることです

エラーが発生した状態では一定時間ごとにチェックが行われているためか、アクションの名前の変更を行っている際に1秒程度で強制完了させられます
瞬時に編集して確定させれば編集は可能なのですが、考えながら入力するのが当然なので漢字変換してるあいだに強制確定されて、入力内容が無くなってしまう

エラーチェッカーさんは、保存を阻むのだけはやめてくれないでしょうかねぇ

アクションが削除出来ないことがある

たまにアクションが削除できなくなることがあります
アプリのネットワーク状況によるものなのかもしれませんが、アクションの詳細メニューから削除を選択しても、うんともすんとも言わず、削除が行われない事があります

この場合はブラウザを再更新すれば、また削除を行えるようになります

これがまた上記のエラー発生時に出た時は非常にやっかいです
なんせ保存できないので、再更新かけられんですから

アクション名の後変更の要注意

アクション名は見出しにもなっているので、わかりやすい文字列にする方がフローを読みやすくなります

ただこれで注意してほしいのが、アクションを作成して後続処理を作成した後に名前を変更する場合です

と、いうのもPowerAutomateの場合に関数の引数にアクションを指定した場合、そのアクション名が文字列として指定されています
ここが後で変更した場合に自動的に変わってくれないのです

そのため、アクション名を変更することで後続の関数が動作しなくなることがあります
動的なコンテンツの追加では構わんのですが、PowerAppsへの引数名にも同じ現象が発生するので、アクション名は後で変更することは基本避けた方が良いです

というか、そもそもアクション名は変更しなくても良いと思っています
正直ここに詳細な内容を書くことが出来ないので、ここにその目的は持たせず、コメントを入力することが出来るのでフローの動作の説明はそちらで記載するようにして、アクション名は初期のまま変更しなくていいんちゃう、と今は感じております

当然動的なコンテンツの追加から選択する場合はアクション名をしっかり付けている方が分かりやすいです
でもアクション名に意味を持たせると、どうしても後で仕様変更だったり修正だったりで微妙につけた名称と違ってくることがあり、その場合には変更するのが非常に面倒ですよね、そもそも動いていたフローを必要以上にいじる必要もあるし
かといって全然ちゃう意味の名前になってたら、なんでこんな名前なんや?と無駄な思考の時間が発生します

なら最初っからアクション名には意味を持たせない、これでええんです
もちろんコメントはどこにも影響与えないので、後で変更はいくらでも可能です

動的なコンテンツの追加が変なとこに入る

動的なコンテンツの追加を行った際に、入力カーソルのある位置に入らないことがあります
というか、連続代入の時はほぼ入りません

いちいち入力カーソルをマウスクリックで指定してから代入を行う必要があります

ついでに言うと、shiftキーを押しながら矢印キーを押していって、入力カーソルを移動させてコピペ範囲を取得しようとしても範囲が広がらないことが多々あります
この場合は、矢印キーを使用せず、shiftキーを押しながらマウスクリックで指定することが出来ます

@が自動的に増え続ける

これはもはや怪奇現象ですが、条件分岐の条件設定に「@」を入力して、別の個所を選択したりしなかったりと発現する理由はよくわかりませんが、どんどん増えていきます

1文字だけ増えたり一気に数文字増えたり、最初見た時はおののきましたね

@自体がPowerAutomateの内部処理では特別な意味を持つ文字であるため、なんらかの補完処理なのかが暴走しているようです

対処としてはこれを文字列として指定すればいいので「”@”」というように文字列指定をして下さい
ってか関数では文字列指定は「’」シングルなんですが条件分岐での入力時はダブルでしないとダメみたいです、もう何がなんやらですね
ちなみに関数のString関数を使用しても良いです、もちろんその場合は「’@’」という引数設定になります

PowerAutomateの詳細画面

フローの詳細設定画面の説明、共有についての説明も行います

PowerAutomateの詳細画面では、フローの名称含め設定関係を行うことが出来ます

フローの詳細画面を開く方法
詳細画面を表示する

詳細画面は初期の作成時には経由しませんので、表示されません
一度保存してから開く必要があります

まずはマイフローを選択して、保存されたフローを表示してください
基本的にはクラウドフローを表示します
ここに表示されたフローから、名称の部分をクリックすると詳細画面が表示されます

ちなみに、この画面から直接編集画面に行く場合は、右側に表示されているえんぴつマークをクリックすると遷移できます

詳細画面の画像
詳細画面の画像

こちらがフローの詳細画面となります

ここでは基本的によく利用するのが、編集画面への移行と共有になります

まず、上のメニューから解説します
「編集」はフローの編集画面に移動します
「共有」はこのフローを別のアカウントに共有することができます
「名前を付けて保存」はこのフローの複製を名前を付けて行うことができます
「削除」「実行」はそのままの意味の動作です
「コピーの送信」は別のアカウントにこのフロー自体を送付できます
「オフにする」は自動実行フローを一時停止する場合に使用します
これ以外はほとんど利用しませんので、割愛します

共有とコピーの送信について

上記のメニューの中でややこしいのが、「共有」と「コピーの送信」です

この2つの操作はどちらも別アカウントで作成したフローを利用できるように共有する機能ですが、共有は別アカウントに所有権を持たせる機能で、コピーの送信は別アカウントを所有者として別のフローを新規作成してもらう形になります

共有の場合は、共同所有者という権限の元に自己アカウントと別アカウントの両方から編集が可能になります
これは主に、フローの設定値などを環境に合わせて変更したり、定期的に変更が必要な場合に別アカウントの人にフローの編集を行ってもらうことが難しい場合に有効です

別アカウントの人から条件設定を聞いてから自分でフローの編集を行えば、その別アカウントの人は新規条件にてフローを実行することが出来ます

一方、コピーの送信は別のフローとして新規作成を行います
なので自己アカウントにあるものはそのアカウントに共有されませんので自分の作ったものをオリジナルとして保管しておくことが出来ます

また、別アカウントの方で新規作成を行うため、そのフローの所有者となることが出来ます
この所有者権限は、2021年2月6日時点で譲渡が出来ない仕様となっています
そのため、作成元のアカウントを削除したりするとフローが利用できなる可能性があります
共有ではあくまでも共同所有者という権限で、所有者権限とは別権限になります

この共有とコピーの送信の機能に関しては、どちらの方が良いというものではありませんので、状況に合わせて使い分ける様にしてください

名前を付けて保存について

名前を付けて保存とは、このフローを別の名称を指定して複製する機能です
フロー自体には複製・コピーといった機能は無く、ここから既存のフローを元に作成する場合に利用できます

また、フロー自体が運用中であれば編集したりテストを実行することも出来ません
テスト自体が保存を実行しないと行えない仕様のためです

なのでフローの編集前に一度別フローとして作成してテストフローとして実行してみて問題ないことを確認してから、運用中フローを更新する。というような場合にも利用できます

オフにするについて

オフにするは、フローの実行を行わないようにする設定です
オフにした場合はこの場所が「オンにする」に切り替わりますので、ここをクリックすることでオンオフの切り替えを行うことが出来ます

基本的には自動実行フローにおいて、メンテナンスを行う際や一時的に利用を停止したい場合に使用します

ただ、この設定をオンにする際に注意が必要なのが、自動実行フローの場合にトリガーが保存されていることがあります
オフにしている間に、実行されなかったフローがオンにした瞬間に一気に連続して走ることがあります
そのため、自動実行フローを戻す場合にフローが実行されてほしくない場合はフローのアクションで一番最初に終了アクションを代入しておき、オンにして自動実行されるかを確認して実行されるようならすべての実行が終了されるまで待ってから、終了アクションを削除して本稼働させる、というような操作が必要になります

また、この設定をオフにした状態ではテスト実行も行えません
テストを行おうとした時点でエラー表示されます

詳細設定について

情報の詳細編集画面
詳細設定画面

フローの名称や説明を編集する場合は、左上の範囲「詳細」の右上にある編集を選択してください

ここを選択すると編集画面が右側に表示されます
ここから編集を行います

ここではフローの名称と説明を記入することが出来ます
フローの名称自体はフローの編集画面でも編集可能です

説明は後で自分が見てわかるようにしっかり記載を行っておいてください

PowerAutomateについて

PowerAutomateについてと新規作成の方法について

PowerAutomateとは、Microsoftアプリの1つで契約内容によって制限が異なります
基本的にアプリの利用に関してはMicrosoftアカウントがあれば利用可能です

また、Webアプリとデスクトップアプリがありますが、根本的に機能がちがっておりデスクトップ版は2021年1月25日現在でプレミアム機能となっております
そのため、このサイトでの解説は全てWebアプリでの解説となります

先頃Windows10ユーザーに対して、無償版のPowerAutomateのデスクトップ版が提供されましたので、当サイトでも解説をしていこうと思います(2021年4月19日追記)

Microsoftアカウントを取得していれば、WebのMicrosoftアプリページに移動することで利用が開始できます

Officeアプリから全てのアプリを表示する
すべてのアプリを選択する

WebのOfficeを開くと左のアプリ一覧の一番下に、すべてのアプリを開くボタンがありますので、ここをクリックします

PowerAutomateの起動方法
PowerAutomateを選択する

一覧に表示されたアプリの中から「PowerAutomate」を選択します
ここに表示されているアプリは、アカウントによって変化します
Web版なので、PCにインストールしているかどうかは関係ありません

フローを新規作成する

新規作成を始める操作方法
新規作成を行う

新規作成を行う場合は、左のメニューから「作成」ボタンを選択します
さらにフローというのは最初に実行条件である「トリガー」というものを最初に設定します

作成した後でも変更は可能なので、「自動化したクラウドフロー」や自動実行のトリガーは後でも大丈夫です
一番テストを行いやすい、手動実行トリガーが最初に選択するのがおすすめです

「インスタンスクラウドフロー」を選択して、次の画面を表示します

手動実行トリガーの選択方法
「手動でフローをトリガーします」を選択する

表示された画面でトリガーの選択とフローの名前を指定できます
フローの名前は後で変更可能なので、とりあえず空白で大丈夫です

「手動でフローをトリガーします」を探して選択して、チェックボタンを付けてください
基本は一番上に表示されていると思いますが、見当たらなければ種類は多くは無いので探してください

新しいアクションの表示方法
処理アクションの追加

作成されると画面が作成画面に切り替わります
この時点でトリガーはすでに作成されています
1番目にあるものがトリガーです

トリガーはフローの中では特別なもので、常に最上部にあり1つしか指定できません

新しいステップをクリックすると、アクションの選択画面が表示されます

表示したアクションから条件コントロールを選択する
アクションの選択画面

全てのアクションが表示されます
下向き矢印で区切られていますが、この範囲より上がアプリで下が実際に追加されるアクションとなります

なので、まずは上の部分から利用したいアプリを検索して選択します
そのあと選択したアプリに対応するアクションが表示されるので、そこから追加を行っていきます

まずはアプリの左上にある「コントロール」を選択してください

条件コントロールアクションの追加
条件を指定する

コントロールには、制御系のアクションがあります

今回はここから条件アクションを追加します
条件アクションはVBAでいうIF分岐になります
ここで指定した条件によってフローの流れを分岐させることが出来ます

手動実行時の引数の設定追加方法
手動トリガーの引数設定

条件式に設定する値を作成します
前にある処理はトリガーのみなので、ここに値を作成します

トリガーのタイトル部分をクリックして展開すると、画像のような表示になります
ここから入力の追加をクリックします

引数に整数値を設定する方法
引数の型指定

すると、引数の型の指定表示となります
PowerAutomateでは変数は型が存在しています
型自体は別記事での解説を行います

今回は整数値を指定できる「数」を指定してください

初期値の設定表示画面
数を指定した初期設定

「数」を指定すると、画像のような表示になります
これがこの引数の初期設定になります
このままでも利用可能ですが、引数の名称だけは変更した方が分かりやすいです

引数の名称設定個所
引数の名称を変更

引数の名称を「数」から「任意の数値」に変更しました
ここは引数名ですが、日本語入力は問題なく利用できますので、VBAでの変数名の付け方をイメージしてもらって良いですね

右側の入力ボックスには既定値の設定が行えます
今回は特に指定しなくても良いです

参照設定に作成した引数の名前を設定する
参照対象の設定

引数の設定が完了したら、その引数を条件アクションに設定します
この時に対象となる引数は、上記で設定した名称がリストに表示されます

条件の設定値を指定する
条件式の作成

中央のボックスは条件式の比較方法です
日本語で記載されているので、特に詳細に説明することも必要は無いとは思います
今回はそのままの「次の値に等しい」を指定しています

右のボックスには比較対象の入力値を設定します
今回はテストのため「0」を指定しておきます

これで引数が0かどうかで分岐処理を行うことが出来ます

フローの保存を実行する
上書き保存の実行

作成が完了したら、上書き保存を実行します
PowerAutomateは自動保存は行わないので、保存を必ず実行するようにしてください

ちなみにエラー発生状態では保存が出来なくなります
原因の特定が出来なくなり保存が出来なくなることがありますが、その場合はWebアプリを終了すれば保存データに戻ります

この保存操作を行う際にフローチェックも行われているので、エラーが出た場合は修正を行ってください

動作の確認を行うテスト実行ボタン
動作テストボタン

動作確認には自動フローでもどちらであっても、このテストメニューから行えます
ここから実行することで、引数があるものは指定して実行することが可能です

実際に実行されるので、テストとはいえ本運用と同じ動きをするのでメール送信をしたりするような外部に対して処理を行っている場合は、事前に注意して実行してください

手動でテストの実行を行う
実行方法の確認

フローの動作のトリガーの設定画面が表示されます
手動トリガーであれば基本的には手動で構いません

自動を選択した場合は、過去に実行した履歴での実行を行う場合に利用します
過去履歴を選択しない場合は、この指定を行った後にトリガー操作を行う必要があります

引数値を指定して実行する操作
引数の設定

手動を選択した場合に、引数がある場合はここで指定を行う画面が表示されます
今回は条件分岐の条件である「0」を指定します
複数の引数がある場合などは、ここに一緒に表示されます

設定値を入力出来たら、下にあるフローの実行をクリックして実際の実行を行います

フローの実行開始メッセージの表示
実行の開始表示

フローが正常に実行されると、画像の画面が表示されますので完了ボタンをクリックしてください

ここは実行の完了であって、フローの処理が完了したわけでは無いので正常表示であれば特にみることはありません

実行結果の確認
実行結果の表示

完了ボタンをクリックすると、実行結果画面が表示されます
処理に時間のかかるものであれば、処理の実行段階が表示されていきます

アクション名の右上に緑のチェックマークの付いたものは正常に実行されたものに付きます
ここを確認することで実行されたルートの確認や、エラーの発生したアクションを確認できます

今回はこの条件アクションは実行され、条件式の結果もここで確認できます
「true」が返されていることから、条件式が真になったことが分かります

trueの場合には、この後のはいの場合に指定したアクションが実行されます
falseの場合には、いいえの場合が実行されます
この条件式は複数条件にすることも出来ます

解説についての注意点

本記事の作成日は2021年1月31日です
この時点での環境で画像等は作成しておりますが、このアプリはいまだ多くのプレビュー機能やアプリの追加が行われています
また、微妙なマイナーチェンジや機能の統合などが日々行われています
そのため、このサイトでの記事と実際の画面が違う可能性があります

また基本的に無いとは思いますが、アクション等の削除も考えれらます
Microsoftもアプリの向上を行っておりますが、それに伴った仕様変更は存在することはどうにもできません
そのため、このアプリで作成するフローは自動的に実行される場合が多いですがたまにはメンテナンスをしてあげてください