PowerAutomate: Lists/Excel Table での Filter Query: Bool 編

# 背景

Microsoft Lists のアイテム取得時に Filter Query 利用するたびに、
Bool で躓く自分に悲しくなったので、記録しておく


# まとめ for Bool

|対象|指定|取得結果(json)|
|-|-|-|
|Lists|0/1|true/false|
|Excel|文字列で指定<br>大文字小文字の揺らぎは無視<br> ex.) TRUE/FALSE|"True"/"False"|

# 前提

[SharePoint REST サービスでサポートされる OData クエリ演算子](https://learn.microsoft.com/ja-jp/sharepoint/dev/sp-add-ins/use-odata-query-operations-in-sharepoint-rest-requests#odata-query-operators-supported-in-the-sharepoint-rest-service)

で定義されてる演算子が色々あるけれど・・

# 準備

適当に、利用しそうな型での Lists を用意

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/0ff8da01-e9f5-98ff-f615-3e6f85842a69.png)

で、これをそのままエクスポートして Query を使って Excel に取り込んだ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/120072/4dc4927e-ecf1-e1cc-b82a-d042009c270b.png)


# 型毎に調べておく

と思ったけれど、骨が折れるので、躓きやすい Bool だけにしておく


# Bool 型を、列名"Bool" で検証
表記、内部共に、揺れが起きやすい型
- はい/いいえ
- Yes/No
- 1/0
- true/false
- True/False
- "True"/"False"
- "TRUE"/"FALSE"
まぁ、他にも・・

## 実際の取得例からみた型比較
### Lists

取得した JSON 上は、bool
- true/false

取得結果例
>                 "Bool": false,

### Excel Table

取得した JSON 上は、文字列っぽい
- "True"/"Talse"

取得結果例
>                 "Bool": "False",

## 演算子 eq (Equal)
### Lists

|概要|記述例|取得結果|所感|
|-|-|-|-|
|0 / 1 で|Bool eq 0|"Bool": false|正常|
|0 / 1 で|Bool eq 1|"Bool": true|正常|
|bool で|Bool eq true|<font color=red>"Bool": false</color>|異常、反転|
|bool で|Bool eq false|"Bool": false|正常に見えるだけ？|
|文字列で|Bool eq 'true'|<font color=red>"Bool": false</color>|異常、反転|
|文字列で|Bool eq 'false'|"Bool": false|正常に見えるだけ？|
|文字列で|Bool eq 'TRUE'|<font color=red>"Bool": false</color>|異常、反転|
|文字列で|Bool eq 'FALSE'|"Bool": false|正常に見えるだけ？|

### Excel Table

|概要|記述例|取得結果|所感|
|-|-|-|-|
|0 / 1 で|Bool eq 0|<font color=red>(nothing)</color>|取得不可|
|0 / 1 で|Bool eq 1|<font color=red>(nothing)</color>|取得不可|
|bool で|Bool eq true|<font color=red>[Invalid filter error](#invalid-filter-error)</color>|演算子認識エラー|
|bool で|Bool eq false|<font color=red>[Invalid filter error](#invalid-filter-error)</color>|演算子認識エラー|
|文字列で|Bool eq 'true'|"Bool": "True",|正常|
|文字列で|Bool eq 'false'|"Bool": "False",|正常|
|文字列で|Bool eq 'TRUE'|"Bool": "True",|正常|
|文字列で|Bool eq 'FALSE'|"Bool": "False",|正常|


|文字列で|Bool ne 'FALSE'|"Bool": "True","Bool": "",|正常|

#### Invalid filter error

演算子そのものもおかしいといわれる始末

> Invalid filter clause: unsupported operation. Only single 'eq', 'ne', 'contains', 'startswith' or 'endswith' is currently supported.
clientRequestId: 363b1d12-3df7-4c89-b9e7-fe9ed52689ff
serviceRequestId: f2dcd170-0ac0-453b-bd6e-7f22754fecd1;985f7e49-e341-4e22-8161-26ab09d7be18;0ecc2835-76df-4a2a-a373-ab9a1601b281


## 演算子 ne (Not Equal)
### Lists

|概要|記述例|取得結果|所感|
|-|-|-|-|
|0 / 1 で|Bool ne 0|"Bool": true,|正常|
|0 / 1 で|Bool ne 1| "Bool": false,|正常|
|bool で|Bool ne true|<font color=red>  "Bool": true,</color>|異常、一致|
|bool で|Bool ne false|"Bool": true,|正常に見えるだけ？|
|文字列で|Bool ne 'true'|<font color=red>"Bool": true,</color>|異常、一致|
|文字列で|Bool ne 'false'| "Bool": true,|正常に見えるだけ？|
|文字列で|Bool ne 'TRUE'|<font color=red> "Bool": true,</color>|異常、反転|
|文字列で|Bool ne 'FALSE'| "Bool": true,|正常に見えるだけ？|

### Excel Table

|概要|記述例|取得結果|所感|
|-|-|-|-|
|0 / 1 で|Bool ne 0|<font color=red>(all rows)</color>|全取得。合っているともいえるが、フィルターの価値無し|
|0 / 1 で|Bool ne 1|<font color=red>(all rows)</color>|全取得。合っているともいえるが、フィルターの価値無し|
|bool で|Bool ne true|<font color=red>[Invalid filter error](#invalid-filter-error)</color>|演算子認識エラー|
|bool で|Bool ne false|<font color=red>[Invalid filter error](#invalid-filter-error)</color>|演算子認識エラー|
|文字列で|Bool ne 'true'| "Bool": "False",<br> "Bool": "",|正常|
|文字列で|Bool ne 'false'|"Bool": "True",<br> "Bool": "",|正常|
|文字列で|Bool ne 'TRUE'|"Bool": "False",<br> "Bool": "",|正常|
|文字列で|Bool ne 'FALSE'|"Bool": "True",<br> "Bool": "",|正常|
|文字列で|<font color=red>Bool ne 'tRue'</font>|"Bool": "False",<br> "Bool": "",|正常。大文字小文字は無視してくれる :laughing: |

# あとがき

下手にやったことがあると、Lists と Excel の間で混乱するので、統一するか上手く許容してくれるとありがたいが・・難しそうかなぁ