4
4

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 1 year has passed since last update.

【小ネタ】Power AutomateからSharePointリストのデータを取得する

Last updated at Posted at 2022-02-03

SharePointOnlineのリストからPower Automateアクションを使用してデータを取得しようとしたときに「このデータ要らないんだけどなあ~」と思ったときにいじったことを覚書します。(個人的にExcelのテーブルから欲しいレコードのみを取得してくる時より苦労したので…。)

必要なレコードだけが欲しい

  • 必要なデータをフィルタクエリで絞ってしまいましょう。なお、SharePointリストにクエリを実行する際はODataクエリを使用する必要があります。
    以下の記事はODataクエリの使い方が分かりやすく紹介されています。

フィルタクエリが意図した通りに動作しない場合

ただし、上記のODataクエリは癖があって扱いづらい1場合があります。(なのでちゃんとテストして動作確認しながらフローの作成を進めましょう!!)

ODataクエリを使いたくないなという場合は 一度「複数の項目」アクションを使用して全件取得した後、「アレイのフィルター処理」アクションを使用すると良いと思います。

ちなみに、SharePointリストでビューを作成してビューで制限したデータのみをとってこようと検証したところ、関係なくアイテムが取得されてきてしまいました…
今回私は文字列型の項目で絞り込んだりBoolean型項目で絞り込んだりしてみましたがデータ型関係なく適用されないようです。

image.png
上記画像のように設定しましたが…取れてくるデータはこれの通りに絞り込まれていませんでした。

:warning: 【2022/07/22追記】型「個人」の列でフィルタークエリをかけれない?

SharepointリストをPower Automateで呼び出した際JSONで返ってきますが、この時にリストで型を「個人(ユーザー)」としたときの列が入れ子構造になっています。

"OData__型「個人」で設定した列": {
                    "@odata.type": "#Microsoft.Azure.Connectors.SharePoint.SPListExpandedUser",
                    "Claims": "i:0#.f|membership|UPN",
                    "DisplayName": "氏 名",
                    "Email": "UPN",
                    "Picture": "https://XXX.sharepoint.com/sites/~",
                    "Department": "XXXX XXX XX"
                }

クエリで指定する際、"OData__型「個人」で設定した列"の内部的な(言い方正しくないかも?)列Emailを指定できれば良いのですが指定方法が恐らくない…。

必要な項目だけを取得したレコード情報が欲しい

予め作成したビューを利用して出力されたJSONの構造を平易化する

image.png
SharePointリストから項目を取得する際、「ビューによる列の制限」をデフォルトのままにするとレコード作成者のデータなども落ちてきてしまい出力されたJSONが煩雑になるので「動的な値」の候補一覧が混雑して嫌になります。

このため、予めSharepointリスト上でそのフローで必要な項目だけを表示するビューを作成する(※方法はこちら)と不必要なデータが落ちてこなくなるので多少見やすくなると思います。

Power Automate のアクションでビューを使用するには作成したビューをパブリックビューにする必要があります。

image.png

SharePointリストの運用で不要な場合、上記の項目などもデフォルト値(「フォルダー内のアイテムを表示する」)から変更すると良いでしょう。

まとめ

  • Power Automate からSharePointOnlineリストへのアイテムの絞り込みは「ODataクエリを使用したフィルタクエリ」が有効
    • でもODataクエリの動作に癖があるからレコードの絞り込みには「アレイのフィルター処理」アクションを使ってもいいかも

  • SharePointOnlineのリストで作成したビューは、Power Automate上ではレコードを絞るのには役に立たない(2022/1月現在)けど取得する列を制限するのには有効

参考

  1. 例えば、私はBoolean型の項目でtrueのレコードを取得しようと列名 eq trueでと取ろうとしたところfalseのデータが取れてきました…。(列名 eq falseでも結果は同じでした)。列名 ne true(もしくは列名 ne false)にしたら取りたいデータが取れてきました…。SQLに慣れている身からすると「???」です。

4
4
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
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?