Microsoft Flow : SharePoint をフロー内で利用する場合 SharePoint の列の作成で気を付けたい事

▼例えば SharePoint の列に「タイムゾーン」という列名があるとします。

Microsoft Flow でこれを式で利用しようとすると…

▼値に「タイムゾーン」を挿入すると列名ではなくて内部名が表示されてしまうんです。

body(‘項目の取得’)?[‘OData__x30bf__x30a4__x30e0__x30be__x30’]

こんな感じで長いのに、Flow の式を入力する箇所は横幅狭いのでいろいろ厄介です。また、これじゃどの値を挿入したか後でチェックするのが大変です。作った本人ならまだしも、別の人がこれを見たら嫌になっちゃいますね。

次に SharePoint の列名を英数半角にしてみます。

▼「TimeZone」という列名で列を作成すれば…

▼このように短くなります。

body(‘項目の取得’)?[‘TimeZone’]

これなら式も短いし、どんな値を挿入したかもわかります。

でも、だからと言って全部 SharePoint の列名を英数半角にするのはなぁ…。そういう時に過去に記事にした対処法があります。

SharePoint 列の内部名

これは SharePoint でカスタマイズをする際に気を付けようという記事でしたが、まんま Flow にも当てはまりました。
つまり、列の作成時には英数半角で作成し、その後に列の編集で日本語にしてしまえばOKです。

▼先程利用した「TimeZone」列を編集し、列名を「たいむぞーん」と日本語に変更しました。

▼ でも、 Flow で「たいむぞーん」を挿入したけど、式の方は「TimeZone」のままです。

これで、SharePoint の列は日本語を利用でき、かつ、Flow の方では式に挿入しても長くならず、後でどの列だかもわかりやすくなります。

後々の事を考えると、列名は英数半角で作るクセを付けておいた方が色々と良さそうですね。

SharePoint 列の内部名 Part2

■内部名の文字数の上限

長い列名を作成した場合でも内部名の長さは一定の長さから変わらなかったので、ちょっと検証してみました。

「内部名テスト」という列名で列を作成すると、内部名は以下のとおり。
_x5185__x90e8__x540d__x30c6__x30

内部名の場合、「_x****_」が一塊なので、

内=_x5185_
部=_x90e8_
名=_x540d_
テ=_x30c6_
ス=_x30
ト=

スの途中で切れているのでやはり上限があるようです。数えたところ、内部名の文字数の上限は32文字でした。ところが、厳密には違うようです。

【検証】

「test(4文字)」×8個=32文字で上限ちょうどの列を作成します。同じリストに「test」のかたまりを更にひとつずつ追加した列を作ってみます。内部名は32文字で切られるので、このままだと同じ内部名ができあがってしまうと思いますが、内部名はユニークなのでどのような挙動になるでしょうか。

以下、
「列名」
「内部名」

testtesttesttesttesttesttesttest
testtesttesttesttesttesttesttest

testtesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest0

testtesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest1

testtesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest2

testtesttesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest3

testtesttesttesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest4

testtesttesttesttesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest5

testtesttesttesttesttesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest6

testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest7

testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest8

testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest9

testtesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttesttest
testtesttesttesttesttesttesttest10

面倒くさかったけど検証終わりました。内部名が同じになってしまうと、自動でオシリに0から数字が振られるようです。10個目はどうだろうと思ったらオシリが2桁に増えました。100個列を作るのは時間がもったいないのでやめますが、この法則だと100個目はオシリが3桁になるんでしょうかね。(列が100個とか運営上は非現実的ですが。)

まとめると、内部名は文字列としては32文字が上限。同じ内部名になると33文字目から0から連番が振られる。

ここまで調べて思ったこと。
この情報、そんなに必要じゃないので時間の無駄だったかも。