前回書いた続きの話。あのシステムに国籍を管理する列を追加しようとして、地味にハマった。
列の表示名は「Nationality」。コピペか手入力かは覚えていないけど、末尾に半角スペースが1つ混じっていたらしい。SharePointは列を追加するときに末尾のスペースをチェックしてくれないので、見た目は普通に「Nationality」としか見えず、エラーも何も出ない。この時点では何も気づかなかった。
何が起きたか
異変に気づいたのはPower Automateでフローを作っていたとき。動的コンテンツから選ぶ分には問題なかったけど、式(expression)を自分で書いて保存しようとしたら通らない。「Nationality」を参照しているつもりなのに、なぜか保存できない。え、なんで、と思って調べてみたら、その列の内部名(internal name、SharePointが列を識別するために使う固有の名前で、表示名とは別物)が「Nationality0」になっていた。
よく見たら、表示名の末尾に半角スペースが入っている。つまり画面上は同じ「Nationality」に見えても、内部的には全くの別物として扱われていたということ。
内部名の確認方法
内部名はリストの一覧画面には出てこないので、確認するにはひと手間必要。リストの設定からその列の編集ページに飛んで、ブラウザのURLを見ると末尾に Field=Nationality0 のような形で表示される。ここで初めて内部名を確認できる。
初心者向けに補足すると、内部名は列を作った瞬間の表示名がそのまま固定される。あとから表示名を変えても内部名は変わらない。なので、最初に何を入力したかがずっと尾を引く。
教訓
一番の教訓は、列を作る最初の1回に慎重になること。表示名がそのまま内部名になる以上、コピペで紛れ込んだ余計な空白1つが後から効いてくる。目で見て気づけないタイプのミスなので、正直これは運が悪かったら誰でも踏む。
あと、似たような構成のSharePointリストを何度も作る機会があったので、それ以降は毎回手入力せず、リストをテンプレートとして、そこから複製する運用に変えた。列名を都度手打ちする回数を減らせば、この手のミスはそもそも起きにくくなる。
こんな人に刺さると思う
SharePointリストをベースAutomateで業務システムをテンツだけでなく式を自分で書くタイプの人には一度は踏んでおかしくないハマりどころだと思う。