背景
Microsoft Lists のアイテム取得時に Filter Query 利用するたびに、
Bool で躓く自分に悲しくなったので、記録しておく
まとめ for Bool
対象 | 指定 | 取得結果(json) |
---|---|---|
Lists | 0/1 | true/false |
Excel | 文字列で指定 大文字小文字の揺らぎは無視 ex.) TRUE/FALSE |
"True"/"False" |
前提
SharePoint REST サービスでサポートされる OData クエリ演算子
で定義されてる演算子が色々あるけれど・・
準備
適当に、利用しそうな型での Lists を用意
で、これをそのままエクスポートして Query を使って Excel に取り込んだ
型毎に調べておく
と思ったけれど、骨が折れるので、躓きやすい 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 | "Bool": false | 異常、反転 |
bool で | Bool eq false | "Bool": false | 正常に見えるだけ? |
文字列で | Bool eq 'true' | "Bool": false | 異常、反転 |
文字列で | Bool eq 'false' | "Bool": false | 正常に見えるだけ? |
文字列で | Bool eq 'TRUE' | "Bool": false | 異常、反転 |
文字列で | Bool eq 'FALSE' | "Bool": false | 正常に見えるだけ? |
Excel Table
概要 | 記述例 | 取得結果 | 所感 |
---|---|---|---|
0 / 1 で | Bool eq 0 | (nothing) | 取得不可 |
0 / 1 で | Bool eq 1 | (nothing) | 取得不可 |
bool で | Bool eq true | Invalid filter error | 演算子認識エラー |
bool で | Bool eq false | Invalid filter error | 演算子認識エラー |
文字列で | 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 | "Bool": true, | 異常、一致 |
bool で | Bool ne false | "Bool": true, | 正常に見えるだけ? |
文字列で | Bool ne 'true' | "Bool": true, | 異常、一致 |
文字列で | Bool ne 'false' | "Bool": true, | 正常に見えるだけ? |
文字列で | Bool ne 'TRUE' | "Bool": true, | 異常、反転 |
文字列で | Bool ne 'FALSE' | "Bool": true, | 正常に見えるだけ? |
Excel Table
概要 | 記述例 | 取得結果 | 所感 |
---|---|---|---|
0 / 1 で | Bool ne 0 | (all rows) | 全取得。合っているともいえるが、フィルターの価値無し |
0 / 1 で | Bool ne 1 | (all rows) | 全取得。合っているともいえるが、フィルターの価値無し |
bool で | Bool ne true | Invalid filter error | 演算子認識エラー |
bool で | Bool ne false | Invalid filter error | 演算子認識エラー |
文字列で | Bool ne 'true' | "Bool": "False", "Bool": "", |
正常 |
文字列で | Bool ne 'false' | "Bool": "True", "Bool": "", |
正常 |
文字列で | Bool ne 'TRUE' | "Bool": "False", "Bool": "", |
正常 |
文字列で | Bool ne 'FALSE' | "Bool": "True", "Bool": "", |
正常 |
文字列で | Bool ne 'tRue' | "Bool": "False", "Bool": "", |
正常。大文字小文字は無視してくれる |
あとがき
下手にやったことがあると、Lists と Excel の間で混乱するので、統一するか上手く許容してくれるとありがたいが・・難しそうかなぁ