【Power Apps】Search関数で「指定された列がありません」と表示される

Search関数で指定された列がありませんと表示される

あこちゃん
何度やってもSearch関数がエラーになるよー!
パパ
エラーの原因をしっかり学んでいこうね

Search関数で正しく引数を指定したはずなのにエラーが発生する…そんなときはこの記事を読んでください。

エラーを回避するだけでなく、「なぜエラーが発生したのか?」を解明して、理解を深めましょう!

発生したこと(起こったエラー)

今回はExcelで作成した以下のテーブルを読み込んでSharePointリストを作成し、Power Appsで表示させます。

フルーツのサンプルデータリスト

このExcelを読み込んで以下のように「fruit_data_sharepoint」というSharePointリストを作成しました。

フルーツ名の列名が「FruitName」であることを覚えておいてください。

これをPower Apps上で取り込んでギャラリーを使って以下のように表示させました。

さらにSearch関数を使ってフルーツ名(FruitName)でテーブルを検索できるようにします。

Search関数の書き方は以下の通りです。

Search( 検索するテーブル , 検索ワード , “列名” )

これに従って列名に”FruitName”を指定すると…

Search関数のエラー画面(指定された列がありません)

「指定された列’FruitName’がありません」とエラーになりました!

あこちゃん
なぜだぁあああ!!!

正しく列名を設定したはずなのになぜこんなことが起こるのでしょうか?!

エラーの条件と原因

SharePointの列名は”内部名”で指定しなければならない

今回のエラーはSharePointリストを使っているときのみ発生します。

エラーの原因はずばり「列名の指定が間違っている」です。

あこちゃん
列名が「FruitName」でなければ一体何なんだろう?

今日は「内部名」という言葉がをぜひ覚えていってください。

すこし詳しく説明していきます。

内部名とは?

SharePointは表示されている列名の他に、見かけ上は見えないシステム内部で持っている名前があります

これが「内部名」です。

見かけ上の列名と内部名が異なっていると、表示名を列名にしたときにSearch関数ではエラーになっていしまいます。

パパ
内部名は見た目に現れないから間違えやすいんだよね

内部名を指定する関数

列名を内部名で指定するものはSearch関数以外ではSortByColumns関数などがあります。

これらの特徴としては列名を””(ダブルクォーテーション)をつけて指定します。

ポイント
列名をダブルクォーテーションで指定するときは内部名を使う

よって、Filter関数など列名を指定するときに””を使わないものは表示名を使ってもエラーにはなりません。

リストの表示名と内部名が異なるとき

列名の指定の仕方が特定の条件を満たした場合

内部名が表示名と変わってしまう代表的な原因は以下です。

  • 日本語の列名
  • 列名の頭が数字・記号で始まる
  • スペース(全角、半角問わず)が含まれる

これらの条件を満たすと表示名とは違う内部名が作られてしまいます。

「列名は英数字を使う」と覚えておきましょう!

SharePointリストをExcelから作成したとき

今回のケースはこれに該当します。

ExcelからSharePointリストを作成するときは、列名を英数字で指定しても内部名が異なってしまいます

試しに、この「fruit_data_sharepoint」をCollect関数でコレクションにして、設定で確認してみましょう

列名がfield_〇となっている

英数字で指定した列名が「field_数字」という名前に変わっています!これが内部名です。

試しに「field_1」をSearch関数の列名に指定してみます。

Search関数の列名を内部名で指定する

エラーが発生せず、くだもの名でリストを検索できていますね!

Excelからリストを作成するときに表示名をそのまま内部名にする方法は残念ながらわかりませんでした。

もし、わかる方がいたらぜひ教えてください。

エラーを回避する方法

列名には英数字を利用する

内部名を表示名と一致させたい場合は列は必ず英数字で指定しましょう

最初に日本語で指定した列名を後から英数字に直しても内部名は変わりません

内部名は最初に列を作成したときに決まってしまうので注意が必要です。

列名に日本語を使うときは後から日本語にする

どうしても列名を日本語にしたい場合は内部名を英数字にしてから後で日本語の列名に変更しましょう

あこちゃん
内部名自体を日本語にすることはできないからね

わたしはこのエラーにはまって理由がわからずかなりの時間を無駄にしました…

ただ、エラーが起こったときは、より深い知識を身に着けるためのチャンスです。

みなさんはSearch関数やSortByColumns関数で同じミスをしないでくださいね!

それでは今日はこれでおしまいです。お疲れ様でした!