1
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Power Automate Desktopがなんとなく使える講座 #8 特別なフォルダーを取得とリストの並び替え

Last updated at Posted at 2021-05-01

 前回作成したフローのトピックを説明していきます。

特別なフォルダーを取得

 ファイルの置き場所は、使用する人によって変わります。通常、デスクトップは C:\Users\xxxxxx のようになっており、xxxxxxの部分はログインユーザー名が使用されます。ログイン名が変われば、当然その部分は変わりますし、人によっては、デスクトップを別のドライブ、ディレクトリに変更している人もいます。
 Power Automate Desktopは、「特別なフォルダーを取得」で、デスクトップやドキュメントなどの特別フォルダー(Special Folder)の場所を取り出し、フォルダーのパスが変数に入ります。(英語では Special Folderと言います。日本語では特別フォルダーや特殊フォルダーと記述されますが、どちらも同じものを指します)
image.png
 特別なフォルダーの名称を開くと、いくつもの名前が並びますが、よく使うのはドキュメント、デスクトップです。規定では、フォルダーのパスを示す %SpecialFolderPath% という変数が生成されます。画面上にはフォルダーのパスが表示されていますが、違う環境になれば、この表示は自動で変更されます。
 このフォルダーを使ってフォルダーやファイルの操作を行います。下の例では、デスクトップのパス %SpecialFolderPath% に続けて、エクセルファイル \personal_information1000.xlsx を開く処理を行っています。スペシャルフォルダーの後ろには、表記では 「\」 になっていますが、日本語キーボードの「¥」をつけてファイル名やフォルダー名をつなげてください。
image.png
image.png
 最後、エクセルを保存する場合も、%SpecialFolderPath% を使って保存します。
image.png
image.png

OneDriveのフォルダーを取得

 その他、OneDriveのフォルダーの場所は、環境変数を使って取得することができます。OneDriveは「OneDriveConsumer」、OneDrive for Businessは「OneDriveCommercial」という環境変数にパスが設定されていますので、以下のように設定します。
image.png

 もし、OneDriveがインストールされていない環境が混在する場合は、先の「特別なフォルダーを取得」を先に実行させ、同じ変数 %SpecialFolderPath% にOneDriveのパスを入れるようにしてやります。OneDriveの環境変数がない場合はエラーになるので、エラー発生時は次のアクションに移動するように設定します。
image.png
image.png
 これで、OneDriveがある環境なら、OneDriveのパス、なければ特別なフォルダーのパスを取得するように設定できます。
 OneDriveにファイルを作成して、Power Automateを走らすという使い方もできますね。
 GoogleドライブやDropboxについては、やり方がわかりませんでした。ご存じの方、教えてください。

リストで並び替えする

 変数アクションの中に、リストの処理についてのものがあります。

アクション 内容
リストの作成 空のリストを作成します。変数を作成するかしないか選べますが、作成しない場合の利用方法は不明です
項目をリストに追加 作成済みのリストに項目を追加します
リストのクリア リストの内容を削除し、空の状態にします
リストから重複する項目を削除 項目で重複する項目を削除し、ユニークな値のリストにします
リストの統合 2つのリストを1つに統合します。
リストから項目を削除 リストの中から特定の値を削除します。削除したい値がリストに含まれていない場合はエラーになります。
共通リスト項目の検索 2つのリストに共通する値のリストを作成します。並び順は最初のリストの順になります。
リストの内容を減らす 1番目のリストの中から2番目のリストの項目を削除します。1番目のリストに同じ削除対象の項目が複数あっても削除されます。
一覧の並べ替え リストの値を昇順に並べ替えます。
リストを逆にする リストの値を降順に並び替えます。
リストのシャッフル リストをランダムに並び替えます。
データテーブル列をリストに取得 データテーブルの列を取り出し、リストを作成します。

 各アクションを頭に入れて、使い方を工夫すると、様々なことができます。
 簡単なのは、数字をつけて「一覧の並び替え」を使えば、小さい順に並び替えが行えます。今回の並び替えでは、項目が日本語で、最初の出身地リストが出現順に項目が入っているので、工夫が必要になります。
 出身地リストと別に、既に整列済みの都道府県リストを作成します。そのリストと出身地リストで「共通リスト項目の検索」を行うと、都道府県リストの並び順のままで、出身地リストにない項目は削除されたリストができます。

image.png
image.png

リストを「変数の設定」で作成する方法

 リストの作成、項目の追加で作成する代わりに、「変数の設定」で一括でリストを作成することもできます。
image.png
%[ と ]% の間に、項目をカンマで区切ります。ちょっと癖のある書き方ですが、覚えておくと便利です。

%[1, 2, 3, 4, 5]%

文字の場合は、 ' (シングルクオーテーション)で囲みます。

%['a', 'b', 'c', 'd', 'e']%

 これだけの操作で色々な処理が可能ですが、リストを使用した操作について、**Zero Sysさんの「Power Automate Desktop の変数(5)「リスト型」」**に更に細かく書かれています。

リスト項目の検索を使って並べ替える

 変数の設定で 値 IN リスト を使うと、値がリストの中に存在するか調べることができます。これを使って2つ目の並び替え方法を作ってみます。
 今回は、TodoufukenList をループ処理します。
image.png
 TodoufukenListに存在する場合のみ、処理を行うようにするため、INを使って評価をします。
image.png
 ループは必ず TodoukenList の項目数行われますが、1000件よりは少ない回数で済みます。

カスタムオブジェクトのリストで並び替える

Power Automate Desktopでは、JSON形式の値を変数に設定することができます。これをカスタムオブジェクトと言います。変数の設定では、%{'Name':Value}% のように設定します。JSONは、文字を「"」(ダブルクォーテーション)で囲みますが、Power Automate Desktopは「'」(シングルクオーテーション)なので、ご注意。
image.png

%{ 'Name': 'Tokyo', 'Value': '03' }%

 設定した値は、%CustomObject.Name% あるいは %CustomObject['Name']% のようにして取り出すことができます。%CustomObject.Name の書き方は、エラーになって入力できないことがありますので、その場合は %CustomObject['Name']% を使ってみてください。
image.png

%CustomObject.Name%
%CustomObject.Value%
%CustomObject['Name']%
%CustomObject['Value']%

image.png

 カスタムオブジェクトをリストにして操作すると、少し凝ったことができます。例えば、都道府県リストを以下のような地域分けの項目を追加し、地域分けに対応したシートに振り分けることも出来ます。以下概略のみ説明しますので、興味のある方はチャレンジしてみてください。
image.png
 カスタムオブジェクトのリストは、Excelから読み取ったデータテーブルをループさせて作ります。
image.png
image.png

%{ 'No': CurrentItem2[0], 'Todoufuken': CurrentItem2[1], 'Block': CurrentItem2[2] }%

 カスタムオブジェクトのリストをループに使用します。
image.png
 アクティブなExcelワークシートの設定で、まだシートが作られていない場合はエラーになりますので、サブフローでシートの作成処理を行い、次の処理に続けます。
image.png
 ページ設定などのシートの設定は、Blockのリストを作成して、まとめてやります。
image.png
 最終的に、このようなシートを作ることができます。
image.png

 こんな面倒なことしなくても、データテーブルでいいじゃないかという意見もあると思います。今回は、この機能を使っていませんが、カスタムオブジェクト・リストには、カスタムオブジェクトの項目を使った並び替えができるからです。
image.png
 「一覧の並べ替え」を開くと、「リスト項目のプロパティで並べ替え」というスイッチがあります。これを開いて並べ替えの基準にする最初のプロパティで、カスタムオブジェクトの項目を入力し、昇順、降順を選択して並び替えることができます。更に、並び替えの項目は、複数を使うことができるので、並び替え機能としては、高機能です。ただし、数値として並び替えをしてくれるのではなく、文字列扱いのため以下のようになってしまうので、一筋縄でいかないのですが。
image.png

Excelでセルを指定するときの列の表記法

 Power Automate DesktopでExcelを操作で、セルの列の指定方法は、A1形式のアルファベットで示す方法と、R1C1形式の数字で示す方法の両方が使えます。以下のように列を A としてもいいし、 1 と入れることもできます。通常はアルファベットの方が使いやすいですが、ループや計算式の結果で示したいときは、数値にすると便利です。
image.png
image.png
 混在させても、動作します。
image.png

1
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?