Power Automate でフィルタークエリを使ってみよう

## はじめに
BizOptimars の いのうえ です。
今回は Power Automate で SharePoint の「複数の項目の取得」アクションのフィルタークエリを使ってみました。
特定の項目を取得して、Teams に通知するフローを作っていきます。

## 用意したもの
SharePoint Lists を 1 つ用意しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/dcd5917b-cbcb-3e27-64f9-20cca2493f6a.png)


| 列名 | データ型 |
|:-:|:-:|
| タイトル  |  テキスト |
| DueDate  | 日付  |
| Status  | 選択肢  |


## フローの作成
今回はスケジュール済みクラウドフローを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/ff6bcb7a-f1e7-8b67-e467-1b51fcb95f64.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/4e95942f-b739-fe6b-4fea-4bd101a34497.png)

トリガーの Time Zone は日本時間に変えておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/f3253a13-179e-2f32-8fa8-a4909055e7a5.png)


次にアクションの追加から「複数の項目の取得」アクションを追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/58b7825d-bf5d-9810-b991-77d517b5b9a1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/f5e213b8-6bfd-a82a-168d-6135493ce4f3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/430f54c6-d26a-b4ab-7e5d-cc1a2ad8af21.png)

サイトのアドレスとリスト名をそれぞれ選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/1355d76e-d0c8-9d24-8ecf-681c9f2f2d7d.png)

詳細パラメーターの フィルター クエリ にチェックを入れます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/ee17778a-047e-894e-48ed-f376f997915c.png)

### Status のフィルター クエリ
まず、Status が「未着手」のものを取得するフィルタークエリを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/c812576c-af4b-b92d-8d85-024df8d3370d.png)

フィルタークエリを以下のようにします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/45877ae5-05b8-9393-fac6-3cc4c846e202.png)
```
Status列の内部列名 eq '未着手'
```
<!-- open属性なし -->
<details><summary>内部列名の確認方法 (クリックすると開きます)</summary>

1. リストを開いた状態で、右上の歯車マークをクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/7bf91bd7-fd0b-11f0-5f20-88f4e633d1a7.png)

2. リストの設定をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/8a9ced59-1056-ad7e-f910-05e4177abb05.png)

3. 内部列名を確認したい列名をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/82fed201-3927-7fd2-6fc3-8b4b3b7ddf1f.png)

4. URL の最後のイコールから後ろの文字列が内部列名です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/aa38c5df-e536-09a9-7849-4b6838ceea4d.png)

※日本語の列名の場合、URL の最後のイコールから後ろの文字列に「OData_」を頭に付けたものが内部列名になります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/c29da3e3-1261-4ec8-3373-3fde8ec2b5b4.png)

最初に日本語で列名を設定した場合は、内部列名がこのような文字列になりますので、お気を付けください。
この列の場合は、内部列名は「OData__x500b__x6570_」となります。

</details>

では、Teams 通知の設定を行います。
まず、通知用の文を変数で作っていきます。
「変数を初期化する」アクションを追加して、以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/d58b50bb-fec9-9f5b-ee03-44d1f0b3e624.png)

次に、「文字列変数に追加」アクションを追加して、以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/ca1e4c3e-bae9-336a-483b-e7ee7d2e40de.png)

最後に、「チャットまたはチャネルでメッセージを投稿する」アクションを追加して、以下のように設定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/be547888-2b96-be34-7300-3c7f3faf4511.png)

これでテストを行いますと、以下のように通知することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/9c221eb4-3524-cb18-91a7-c790d771ab3a.png)

### DueDate のフィルター クエリ
次に、DueDate が本日以降のものを取得するフィルタークエリを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/38650bd1-37d2-14ba-a896-7c32cf162849.png)

「複数の項目の取得」アクションの前に、現在の日付の取得をしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/5e75f848-a758-aee6-c760-934b228c8dd2.png)

変数のパラメーターは画像の通りです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/8a4d123f-acc9-db2a-9304-6ad7f0b1f771.png)

今回使用してるサイトのタイムゾーンは **日本** に設定している状態です。

タイムゾーンの確認や変更の方法はこちらの記事を参考にしてください。

https://qiita.com/bizoptimars_21/items/4895e54e4b2690ed3f88


フィルタークエリを以下のように変更します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/fa818e23-8e37-10d6-d59a-bcd5dd089168.png)

```
DueDate列の内部列名 ge '日付の変数'
```
「チャットまたはチャネルでメッセージを投稿する」アクションの文言を変えておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/507ca60f-930b-3436-c6c5-92e25661a285.png)

これでテストを行いますと、以下のように通知することができました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966048/3324a21b-6add-4bb9-5c84-bdc8b0d0e1d4.png)

## おわりに
フィルタークエリは、最初は躓きやすいところになりますので、ぜひチャレンジしていただければと思います！

今回は、eq (等しい) と ge (以上) を使いましたが、以下公式ページでは、他の演算子についても記載がありますので、ご参考にしていただければと思います。

https://learn.microsoft.com/ja-jp/sharepoint/dev/business-apps/power-automate/guidance/working-with-get-items-and-get-files#numeric-comparisons