いつものフィルタークエリ利用時の障壁乗り越えモノです。
経緯・前提条件
- 所属するTeamsチームがグループフォーム(Forms)を持っています。
- フローは、Formsで回答した人を所属するTeamsチームにメンバー追加をします。(Teamsチームの所有者権限を私が持っています)
- また、別部署が管理しているSPOにあるメンバーリスト(SPOリスト)にアイテム追加を同時にしています。
- 既に別のTeamsチームでメンバーリストに登録されている人がおり、SPOリストにユニーク設定があり一意制約違反でフローの実行が失敗しました。
- 複数アイテムの取得アクションでフィルタークエリで表示列名を指定したところエラーになりました(=表示名と内部名が異なる)
SPOリストの列を追加する際に日本語で列名を作成しないでください。フィルタークエリを利用する際にこのような面倒が増えます。
日本語表記にしたい場合は英数字で列名を定義して保存(=内部名になります)した後に、日本語名に変更して保存してください(=表示名になります)。
フィルタークエリの操作でやはり手間が起こるのでリスト列名は内部名=表示名で運用をしてくれたら嬉しいです。
通常のリスト列の内部名確認方法
自分に管理者権限がないSPOのリストの列名を取得したい場合、
のような手順では参照できません(”リストの設定”のメニューが出てきません)
経緯・前提条件のような場面でのリスト内部列名取得方法
② ①のフローを実行すると、対象のSPOリストの既定の列を含んだすべての列(JSON)が返されます。「EntityPropertyName」から該当の列を探します。
プロパティ(一部省略) | 設定されていた値 | 補足・考察 |
---|---|---|
CanBeDeleted | trueかfalse | 消せる列か否か |
EntityPropertyName | "OData_{InternalName}" | フィルタークエリで使いたいのはコレ! |
Filterable | trueかfalse | フィルターできるか |
Hidden | trueかfalse | 表示列か否か |
InternalName | 内部名! | |
Required | trueかfalse | 値が必須か |
Scope | "/sites/{サイト名}/Lists/{リスト名}" | |
StaticName | InternalNameと同値? | |
TypeDisplayName | 選択肢、計算値、参照 など | 列の種類が設定されている |
TypeShortDescription | TypeDisplayNameと同値 |
今回は「ユーザーまたはグループ」のカスタム列の内部名を取得したかったのであたりをつけることができましたが、対象列が複数候補があったり元々列数が多いリストでは大変なのでもっと上手い取得方法があればフィードバックいただけるとありがたいです。
リスト列名を日本語で定義しない、を徹底していたらこんなことにはならないわけですが。。
余談(想定外の動き。。)
このメンバーリストは以前サイトの管理者権限、リストの編集(投稿か?)権限を持っていたもので、現在はサイトの管理者権限ははく奪されています。
こちらに記したとおり、「アイテムの更新アクションで権限がない旨のエラーになるなぁ」と思いながらリランしたところ、正常終了してしまいました(!)
アクションの接続時点の権限が有効なのか?という推察と、うまいこと動いてしまったのでまぁいいかと放置しています。。
付録