PowerApps|Lookup関数|「互換性エラー」対策のポイントはデータ型!

このサイトはアフィリエイト広告(Amazonアソシエイト含む)を掲載しています
  • URLをコピーしました!

Lookup関数はデータ型を意識して使用する

Lookup関数実行時に発生する「互換性エラー」の対策はデータ型を正しく理解することが一番の近道です。

Plat(プラット)

具体的にはデータ型というのは以下5つのようなものを指します

データ型のサンプル
  • レコード
  • テキスト
  • 数値
  • 選択肢
  • テーブル
Aさん

思ったよりたくさんあるんですね・・・

このデータ型というのはSharePointリストとPowerAppsの各種コントロールが持っている型です。

各アプリで用意された値の型を合わせることでエラーを防ぎます。以降具体例を使って解説します。

関連書籍

\楽天ポイント4倍セール!/
楽天市場

関連記事

本記事はドロップダウンの記事と関連が深い記事となっています。

Lookup関数は変数とも関わり合いが強いです。

こちらは上級者向けです。委任(デリゲーション)について知りたい人はこちらをご覧ください。

目次(リンク機能付き)

Lookup関数とは

Microsoftの公式ドキュメントはこちらです。少々分かりにくい方は以下内容をご覧ください。

事例

SharePointリストを以下のような構成で用意してみました。

フィールド名SharePointListの型補足
Title単一行テキスト文字列として扱う
Status選択肢(単一)1つの選択肢を選ぶには.Value が必要
Category選択肢(複数)Concat で文字列化
IsActiveはい/いいえIf ステートメントでは文字列化が必要
Count数値Selected.Value は文字列なので注意
Created日付と時刻適宜Text() で形式を整えましょう
SharePointとPowerAppsで型を合わせることでエラーが出ない環境を構築することができます

実際にリストを用意してみました。レコードは1つです。

SharePointリストを実際につくってみた

SharePointリストに対してPowerApps側で用意するLookup関数です。

PowerApps側ではテキストラベルのTextプロパティに式を書くことを想定してください

基本構文

この式はエラーになります。ご注意ください。(正解の式が気になる方はこちら

LookUp(SharePointList, ID = 1)

戻り値は1行分のデータとなります。冒頭でも申し上げましたようにレコード型となります。

戻り値のサンプル(ID=1のレコード)
{
  Title: "案件A",
  Status: { Value: "完了" },
  Category: [ {Value:"A"}, {Value:"B"} ],
  IsActive: true,
  Count: 10,
  Created: 2026-03-20
}

ただしテキストラベルではこれらの値を受け取ることができません。

レコードの中から1つの列の値を取得する方法

先ほど説明した式ではエラーがでます。理由はテキストラベルに合った値が用意できてないからです。

エラーが出ないように式を変えます。Lookup関数の後に列名を指定しましょう。

この式をPowerAppsのテキストラベルのTextプロパティに書くと「案件A」という文字列が表示されます。

IDが1のレコードからタイトル(Title)列の値を取得する

この式が正解です(エラーは出ないです)

LookUp(SharePointList,ID=1).Title
Aさん

これでレコードの中からタイトル列の値を取り出すことができるんですね
レコードを取得してからタイトルを取り出すというイメージです

Plat(プラット)

とても良いイメージです

様々な型の列が乱立していてもLookup関数としてはまずはレコードとして値を取得することになります。

ここから少々式を付け加えることで任意の列の情報を取り出すことができるようになるという建付けです。

Lookup関数で互換性エラーが出る理由

繰り返しとなりますがLookup関数はSharePointリストなどのデータソースからレコードを取り出す関数です。

このレコードとレコードが展開される側(PowerApps)のコントロールとの型の不一致でエラーが起きます。

互換性エラーが起きる典型的パターン

代表的なエラーとエラーメッセージを挙げておきます。

番号エラーが出る原因エラーメッセージ
1レコード型の値をテキストに格納しようとするText値が必要です
2値が複数選択されている中で単一値として扱ってしまうText値が必要です
3複数の値(レコード)を単数の値との比較に使ってしまう型に互換性がないため比較できません

あくまで一例ですがエラーの際はまず型の不一致からくるエラーを疑ってみてください。

よくある互換性エラーと正しい式の書き方

ここからは前項で挙げた事例に対してより具体的な例を用意して解説します。

エラーが出ているコードと正しく書いたコードを比較できるように用意しています。

その1:レコード型の値をテキストに格納しようとする

PowerApps側ではテキストラベルのTextプロパティに式を書くことを想定してください

誤:レコード型の値が取得されたのでテキスト型の箱では値を受け取ることができません

LookUp(SharePointList,ID=1)

正:レコード型の値からPowerAppsのテキストで値を受け取ることができる単数型に絞り込み

LookUp(SharePointList,ID=1).Title

その2:値が複数選択されている中で単一値として扱ってしまう

PowerApps側ではテキストラベルのTextプロパティに式を書くことを想定してください

誤:Category列は複数の値が用意されているのでテキストラベルのTextプロパティには合わない

LookUp(SharePointList, ID=1).Category

正:値がAのものだけ欲しいという指示にすることで単数の値を取り出すことができています

LookUp(
    LookUp(SharePointList, ID=1).Category,
    Value = "A"
).Value

その3:複数の値(レコード)を単数の値との比較に使ってしまう

PowerApps側ではテキストラベルのTextプロパティに式を書くことを想定してください

加えてここではDropdownを1つ用意して値は「完了」にしておきます

誤:Status列の何とDoropdown1の値を照合したらいいのか分からない状態です

LookUp(
    SharePointList,
    Status = Dropdown1.Selected.Value
)

正:Status列の値とDoropdown1の値を照合し一致した列のCreated列が取得できました

LookUp(
    SharePointList,
    Status.Value = Dropdown1.Selected.Value
).Created

Sharepointリストの列名や列型も確認しましょう

PowerApps側ばかり見直しても解決しないことがあります。

エラーの際はあらためてSharePointリストについても確認することを忘れないようにしてください。

Plat(プラット)

SharePoint側にも問題があるかもしれない・・・

Aさん

PowerAppsだけではなくSharePoint側も見直しが必要という事ですね

よくある落とし穴

主に「勘違い」と言われるものが大半です。ゆっくり落ち着いて確認してみましょう。

  • SharePoint側の値が思っていた型ではなかった(式は合っているけど型の思い違いでエラー)
  • SharePointリストの列名を間違えていた(Titleとtitleを間違えてエラー)

PowerAppsは一部優秀な所がありアプリ内では型の違いを認識しエラーを吸収するケースもあります。

しかし厳密にはSharePointと連携を取るとなると話は別です。PowerApps側と型を合わせましょう。

¥2,750 (2024/07/01 10:16時点 | Amazon調べ)
\楽天ポイント4倍セール!/
楽天市場

まとめ

PowerAppsのLookup関数で発生する互換性エラーはデータ型が理解できれば対策済のようなものです。

しかし普段は「値の型」を意識することはあまり無いのですぐ理解するのは難しいと思われます。

何回か作業をすると慣れてくるので根気よく続けることを意識しましょう。

このスキルが身につくと1ついい事があります。変数の理解も深まります。理由は変数にも型があるからです。

関連記事
よかったらシェアしてください!
  • URLをコピーしました!