33
35

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でSharePointリストの収集をする際のフィルタや並び替えの書き方

Last updated at Posted at 2019-07-04

お詫び

初出時に「Power Automateで読み込める件数は最大100件まで」と書きましたが、これは設定で変更が可能な値でした。該当の個所を修正しました。

また、アクション側の設定で読み込み件数を増やす方法はこちらに記載していますので、併せてご覧ください。

前書き

Power Automate(旧Microsoft Flow)でSharePointのリスト項目を複数読み込む際、SharePointのアクションでフィルタをかけることができます。

読み込んだ後でPower Automateのフィルタアクションを使うことも出来ますが、あらかじめフィルタして置いたうえで処理したほうが余計な処理が発生せず、早いし無駄がないです。

ただ、フィルタや並び替えはODATAのクエリを使うと書かれており、参考情報もあるのですが、クエリパラメーターのどこまでをPower Automate側で用意してくれていて、どこからを自分で記入すればいいのかがわからなくなりがちなのでまとめてみました。

2019-07-04_21h40_56.png

テスト用データ

今回のテスト用リストにはこのようなデータを作ってあります。

UserID 表示名 クラス
1 テストユーザー1 A
2 テストユーザー2 B
3 テストユーザー3 C
4 テストユーザー4 A
5 テストユーザー5 B
6 テストユーザー6 C
7 テストユーザー7 A
8 テストユーザー8 B
9 テストユーザー9 C
10 テストユーザー10 D

フィルタークエリ

基本

上記のリファレンスを読むとこのように書かれていますが、

GET https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'J')

この中の、$filter=まではアクション側で用意されていると考えればいいようです。

すなわち、Microsoft FlowのSharePointのアクション内のフィルタクエリとしては以下の内容を書きます。

startswith(displayName,'J')

日本語列名の問題を解決する

ところが、SharePointの列名を日本語で作成していた場合、列指定の方法に悩まされます。列名を調べる方法は大きく二つあります。

SharePointで列名を調べる

リストの設定を開き、列名を調べたい列を開きます

2019-07-04_22h10_48.png

この時、URL末尾の&Field=の後の文字列の先頭に、OData_を追加したものが列名になります。

2019-07-04_22h12_09.png

今回の場合はこちらです。

OData__x8868__x793a__x540d_

Power Automateで列名を調べる

一度、取得するエントリ数を1件などに制限し、フィルタをかけずにPower Automateを実行してみます。結果の出力を確認すると、以下のように列名と値の結果が得られます。

2019-07-04_22h15_57.png

今回だと以下の値が列名となります。

OData__x8868__x793a__x540d_

※ "_"は二つ続くので注意

特定の文字で始まるものでフィルタ

今回は表示名が「テストユーザー1」で始まるものでフィルタしてみたいと思います。

startswith(OData__x8868__x793a__x540d_,'テストユーザー1')

2019-07-04_22h30_26.png

今回の場合、以下の2アイテムがフィルタされた結果として得ることが出来ています。

  • テストユーザー1
  • テストユーザー10

並べ替え

基本

並べ替えもフィルタ同様の考え方が出来ます。つまり、下記の例だと

GET https://graph.microsoft.com/v1.0/users?$orderby=displayName

$orderby=まではアクション側で用意されていると考え、残りのdisplayNameの部分だけ書きます。

任意の列で並び替える

「クラス」という列名で並び替えてみます。これも日本語の列名なので、先ほど同様にOData_で始まる列名を取得しておきます。

並び替えは列名を入れるだけなのでこれだけです。

OData__x30af__x30e9__x30b9_

2019-07-04_22h43_27.png

結果が実感しにくいので、クラスと表示名を並べて結果を自分にメールで送ってみます。

2019-07-04_22h46_01.png

ちゃんとクラス順に並び替え出来ました

2019-07-04_22h47_49.png

昇順と降順を切り替える

並び替えの列名に続いて、いずれかの語句を追記します。

  • 昇順の場合:asc
  • 降順の場合:desc

とはいえ、既定値が昇順なので、降順にしたいときだけdescを追加、と覚えておけばよいかと思います。

先ほどの結果を降順にしてみます。「並び替え順」に以下のように入力します。

OData__x30af__x30e9__x30b9_ desc

2019-07-04_22h53_52.png

ちゃんと降順で出力されることを確認しました。

2019-07-04_22h55_30.png

おことわり

本記事は2019年7月4日時点の検証結果を元に書いています。今後のアップデートなどで変更が発生する可能性があります。

33
35
1

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
33
35

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?