このサイトはアフィリエイトリンクを含んでいます
スポンサーリンク

PowerAppsとSharePointリストの選択肢をスムーズに連携!ドロップダウンの初期値設定とエラー対策のすべて

PowerAppsとSharePointリストの選択肢をスムーズに連携!ドロップダウンの初期値設定とエラー対策のすべて AIで調べてみた
スポンサーリンク

今回はPowerAppsでSharePointリストの選択肢をドロップダウンの初期値として表示させる方法を、実際のやり取りをもとに解説していきます。ほかにも「テーブル型データの扱い方」や「Valueプロパティの必要性」など、よくつまずきやすいポイントをまとめました。これを読めば、SharePointリストとPowerAppsの連携における選択肢設定がスルリと解決できちゃいます。初心者さんにもわかりやすい手順や具体例をていねいにご紹介するので、ぜひ参考にしてくださいね。


スポンサーリンク
  1. 問題の経緯と背景
    1. ユーザーから寄せられた「ドロップダウンに選択肢を初期値として表示させたい」相談
    2. ChatGPTを使って解決した成果
  2. ChatGPTで得られた主な回答内容
    1. ドロップダウンのItemsプロパティ設定(Choices関数)
    2. ドロップダウンのDefaultプロパティ設定(.Valueの役割)
  3. 実際に試した手順と注意点
    1. Step 1. SharePointリストの接続確認
    2. Step 2. ドロップダウンのItemsプロパティにChoices関数を設定
  4. フォームの新規作成時と編集時のDefaultプロパティ
    1. Defaultプロパティの設定例(If関数で切り替え)
  5. 選択肢列がテーブル型の場合に起こるエラーとValueプロパティの重要性
    1. Valueを付けない場合に見られるエラー例
  6. 複数選択列に対する対処法(Concatで文字列化)
    1. 複数選択列から文字列へ変換する方法
  7. Galleryを利用したシナリオでの初期値設定
    1. GalleryコントロールのSelectedプロパティを活用する
  8. 実践的なサンプル(新規・編集両対応)
  9. 実際のやり取りから学ぶ解決フロー
    1. 問題提起
    2. ChatGPTの回答と気づき
    3. 解決
  10. SharePointリストとPowerAppsの連携でよくあるQ&A
    1. Q1. SharePointで複数の選択肢を持つ列を単一選択扱いしたい場合は?
    2. Q2. DefaultプロパティにThisItem.列名だけを書いたらエラーになるのはなぜ?
    3. Q3. 新規画面で特定の選択肢をデフォルトにしたいけど、編集時は保存済みの値がほしいときは?
  11. まとめと今後の応用
    1. 結論
    2. 応用編:条件分岐やロール別表示など
    3. よくあるトラブルを未然に防ごう

問題の経緯と背景

問題の経緯と背景

今回のお話は「PowerAppsでSharePointリストの選択肢をドロップダウンの初期値として設定する際に起きたトラブル」と、その解決までのやり取りなんです。PowerAppsとSharePointリストを連携させると便利ですが、ちょっとした設定ミスでエラーが発生することもありますよね。特に、選択肢列がテーブル型の場合や複数選択列の場合に混乱しがちです。そこで、この記事ではChatGPTを使って明確になった解決策を紹介し、どのような手順で設定すればスムーズにいくかをくわしく解説します。少し長い記事になりますが、最後まで読んでいただければPowerAppsのドロップダウン設定がばっちり理解できるはずです。では、まずは具体的な経緯から順番にご紹介していきますね。

ユーザーから寄せられた「ドロップダウンに選択肢を初期値として表示させたい」相談

PowerAppsで入力フォームを作るときに、SharePointリストの選択肢列をドロップダウンで表示したい場面はよくあります。今回のご相談は「SharePointリストの選択肢をPowerApps側でドロップダウンに設定し、それを初期値として表示させたい。でも、どこに何を設定していいのかわからない」というものです。
具体的には、ドロップダウンのItemsプロパティとDefaultプロパティ、それからSharePointリストの列の型(テーブル型か単一なのか、複数選択を許容するかどうかなど)によって、設定の仕方が微妙に変わります。たとえば、ドロップダウンのDefaultにThisItem.選択肢列名を指定してもうまく表示されなかったり、.Valueを付けるべきかどうかで悩んだりするんですね。今回のやり取りでは、そのあたりをスッキリ解決してもらいましたよ。

ChatGPTを使って解決した成果

色々な方がネット上に情報を出してくれていますが、バージョンや状況によって設定が異なることがあります。そこで今回、ChatGPTに質問したところ、「SharePointリストの選択肢列がテーブル型データで、そこに初期値を設定する場合は.Valueを使うと良い」というアドバイスをもらい、一気に問題が解決したんです。さらに、Choices関数やIf関数を絡めて新規作成フォームと既存データ編集フォームで違う処理をしたいときの書き方も紹介してくれました。


ChatGPTで得られた主な回答内容

ChatGPTで得られた主な回答内容

PowerApps初心者さんにとっては「具体的にどこをどう設定するのか」が一番気になるところですよね。ここでは、チャットのやり取りの中で最終的にまとめられた内容をもとに、わかりやすく整理してみます。ドロップダウンのItemsプロパティとDefaultプロパティにどのような式を書けばよいか、順番に見ていきましょう。

ここではまず、なぜ.Valueが必要になるのか、その理由からお話しします。SharePointの選択肢列が「テーブル型」になっていると、PowerApps側ではそのまま文字列として扱えないケースがあるんですね。テーブル型を文字列などのシンプルなデータに変換するときに.Valueが重要な役割を果たします。

ドロップダウンのItemsプロパティ設定(Choices関数)

選択肢列の内容をドロップダウンに表示させるために一番基本となるのが、Itemsプロパティへの設定です。ChatGPTの回答では次のように書かれていました。

Items プロパティ = Choices(SharePointListName.選択肢列名)
  • SharePointListName はPowerAppsで接続しているSharePointリストの名前です。
  • 選択肢列名 はリストにあるカラムの内部名を指定します。

ここでポイントになるのは、SharePointの選択肢列が「選択肢型」であればChoices関数が有効に使えるということです。これでリストに設定された選択肢をすべて取得し、ドロップダウンに表示できます。

ここまでで、ドロップダウンの選択肢自体は一覧で並ぶようになりますが、まだ「初期値」は設定されていません。初期値をきちんと設定するためには、Defaultプロパティの調整が必要なんですね。

ドロップダウンのDefaultプロパティ設定(.Valueの役割)

続いてDefaultプロパティです。既存のSharePointリストからアイテムを編集するフォームの場合、ユーザーが「このアイテムはすでに〇〇という選択肢を選んでいますよ」という状態を最初からドロップダウンに反映させたいですよね。そのために、次のような式を使います。

Default = ThisItem.選択肢列名.Value
  • ThisItem.選択肢列名 ではなく、.Valueを付けておくのがポイント。
  • 新規作成フォームの場合は If(Form.Mode = FormMode.New, "初期値", ThisItem.選択肢列名.Value) のようにIf関数で使い分けることも多いです。

SharePointの選択肢が「単一選択」ならこれで大体OKです。ですが、もし「複数選択」を許容している場合は、取得されるデータが複数の値を含むテーブルになるので、そのままだとドロップダウンにうまく渡せない可能性が高いんですね。そのときは Concat(ThisItem.選択肢列名, Value, ", ") のように文字列化する処理が必要になる場合もあるので、要注意です。


実際に試した手順と注意点

実際に試した手順と注意点

ここからは、ChatGPTの回答を実際に試して設定を行った手順と、その過程で気をつけたポイントをまとめます。ちょっとした操作ミスや型の違いなどでエラーが出やすいので、ポイントを押さえて作業すると安心です。

PowerAppsでFormを使う方法や、Galleryを使う方法などいろいろなパターンが想定されますが、今回は「編集フォーム(EditForm)」での設定を例にお話ししますね。もちろんGalleryを使った画面遷移の場合でも、Defaultプロパティの式をうまく書き換えれば対応できます。

Step 1. SharePointリストの接続確認

まずはPowerAppsにSharePointリストをデータソースとして追加し、正しく接続できているかを確かめます。SharePointリストの名前や、選択肢列の内部名が間違っていないか要チェックです。リスト名が長かったり、日本語が入っている場合は内部名が違うケースもあるので、SharePoint側で確認してみてください。

注意点

  • 選択肢列の内部名は「表示名」と異なる可能性があります。
  • SharePointリストを選択してデータコネクションを追加する際、PowerApps上でどのように認識されているかを見ると間違いが減ります。

Step 2. ドロップダウンのItemsプロパティにChoices関数を設定

次に、ドロップダウンコントロールを挿入します。そのドロップダウンの「Items」プロパティに以下のように入力しましょう。

Choices(SharePointListName.選択肢列名)

これでSharePointリスト側の選択肢が一覧として取得できます。うまくいくと、プレビューでドロップダウンを展開したときにSharePointに設定してある選択肢が並ぶはずです。もしエラーが出るようなら、リスト名と列名を再チェックしてください。


フォームの新規作成時と編集時のDefaultプロパティ

ここでは「FormMode.New(新規作成)」と「FormMode.Edit(編集)」で表示したい初期値が異なる場合の例をもう少し詳しくご紹介します。たとえば、新規作成のときは「未選択」や「デフォルトの選択肢」を最初から表示させ、編集時には「既存のレコードに保存されている値」を表示させたい場合に使えるテクニックです。

フォームコントロール(編集フォーム)を使っている前提でお話しします。通常、SharePointFormEditというフォーム名が自動で付与されることが多いですね。

フォームの新規作成時と編集時のDefaultプロパティ

Defaultプロパティの設定例(If関数で切り替え)

編集フォームで使うドロップダウンのDefaultプロパティに、以下の式を入力してみてください。

If(
SharePointFormEdit.Mode = FormMode.New,
"初期値として表示したい文字列",
ThisItem.選択肢列名.Value
)
  • SharePointFormEdit は使っているフォームの名前です。自分の環境に合わせて変更してください。
  • FormMode.New は新規作成のとき、FormMode.Edit は既存アイテムを編集するときです。
  • 新規作成時は「初期値として表示したい文字列」を設定でき、編集時はSharePointリストの値をそのまま表示します。

もし複数選択列を使っている場合は、「初期値として表示したい文字列」を["選択肢1", "選択肢2"]のように配列として指定したり、Concatを使ったり、状況に応じて工夫してみてください。


選択肢列がテーブル型の場合に起こるエラーとValueプロパティの重要性

選択肢列がテーブル型の場合に起こるエラーとValueプロパティの重要性

ここでは、今回の解決の要になった「.Value」の取り扱いについてもう少し深堀りします。SharePointの選択肢列はPowerApps上でテーブル(RecordやTable)として扱われることがあります。そのため、DefaultプロパティにそのままThisItem.選択肢列名を入れると、「テーブル型だから文字列として扱えないよ」というエラーが出てしまう可能性があるんです。

Valueを付けない場合に見られるエラー例

たとえばこんなエラーが出ることがあります。

  • “We expected a Text value, but this table has been provided.”
  • “This rule creates a circular reference…” (設定の仕方が悪い場合)

こういう場合は選択肢列のデータが「テーブル型」になっている可能性が高いです。そのため、.Valueを追加して「テーブルの中から実際の文字列を取り出すよ」とPowerAppsに教えてあげる必要があります。


複数選択列に対する対処法(Concatで文字列化)

複数選択列に対する対処法(Concatで文字列化)

SharePointリストの選択肢列が「複数選択可」となっている場合は、さらに注意が必要です。複数選択の場合は、選択肢データが「複数の値を含むテーブル」として扱われます。そのため、単一の文字列としては直接取り出せません。そこで便利なのが Concat() 関数です。

複数選択列から文字列へ変換する方法

以下のように書くと、複数の選択肢をカンマ区切りの文字列にまとめられます。

Concat(ThisItem.選択肢列名, Value, ", ")
  • これで複数の選択肢が一つの文字列として扱えます。
  • ドロップダウンのItemsが複数選択を想定している場合、設定の仕方が単一選択とは異なるので、ドロップダウンではなくListBoxコントロールを使うケースもあります。

複数選択は少し複雑ですので、状況に応じて「単一選択か複数選択か」を見極めて設定を変えてみましょう。


Galleryを利用したシナリオでの初期値設定

Galleryを利用したシナリオでの初期値設定

PowerAppsでよくあるシナリオのひとつとして「ギャラリー画面でアイテムを選択し、詳細画面または編集画面に移動する」という流れがありますよね。この場合、初期値を設定したいドロップダウンのDefaultプロパティには「ギャラリーで選択中のアイテム情報」を反映させる必要があります。

GalleryコントロールのSelectedプロパティを活用する

たとえば、ギャラリーコントロールをGallery1として、編集画面のドロップダウンで初期値を表示したい場合、Defaultプロパティは次のように書けます。

Default = Gallery1.Selected.選択肢列名.Value
  • Gallery1で選択されたアイテムを示すのが Gallery1.Selected です。
  • 選択肢列が単一選択なら.Valueを付けるだけでOK。
  • 複数選択列なら Concat(Gallery1.Selected.選択肢列名, Value, ", ") などを使いましょう。

ギャラリーを使うときは「別画面に移動したあと、その画面のFormコントロールのItemプロパティを Gallery1.Selected にする」のが王道パターンでもあります。その場合は、フォームコントロール内では ThisItem.選択肢列名.Value で取得できます。


実践的なサンプル(新規・編集両対応)

実践的なサンプル(新規・編集両対応)

ここでは簡単な例をひとつ示します。たとえば、SharePointリストが「案件管理」という名前で、選択肢列として「ステータス」というカラム(単一選択)を持っているとします。新規作成時には「未着手」を初期値として表示し、編集時には「現在設定されているステータス」を表示したいケースです。

項目設定例
データソース案件管理 (SharePointリスト)
選択肢列名ステータス (内部名はStatusの場合あり)
ドロップダウンDropdown_Status として作成
Items設定Choices(案件管理.ステータス)
Default設定If(Form1.Mode = FormMode.New, "未着手", ThisItem.ステータス.Value)
  • ※フォームの名前が Form1 の場合。
  • 新規作成時に「未着手」、編集時にはリストに保存済みの選択肢値が表示されます。

このように設定すると、PowerAppsを実行したときに、まだデータがない新規画面では「未着手」がデフォルト選択肢として表示され、既存のアイテムを開いたときには、登録済みのステータスが自動で選ばれています。


実際のやり取りから学ぶ解決フロー

実際のやり取りから学ぶ解決フロー

今回のブログ記事は、あるユーザーの「ドロップダウンの初期値をどこに何を設定すればいいの?」という疑問に対して、ChatGPTが回答を提示し、その中で「選択肢列がテーブル型の場合、.Valueをつけなきゃダメだよ」というアドバイスが重要だったという流れをまとめています。では、そのやり取りのダイジェストを振り返りながら、問題解決の流れをおさらいしましょう。

問題提起

  • 「PowerAppsのドロップダウンにSharePointリストの選択肢を初期値で表示させたい」
  • 「でもどこに何を設定すればいいのかわからない」

ここで特に重要だったのが、「Itemsプロパティには何を書くのか」「Defaultプロパティには何を書くのか」の2点です。

ChatGPTの回答と気づき

ChatGPTは次のポイントを教えてくれました。

  1. ItemsプロパティChoices(SharePointListName.選択肢列名)
  2. Defaultプロパティ → 新規か編集かで式を分ける
    • 新規:文字列を直接入れる
    • 編集:ThisItem.選択肢列名.Value
  3. 複数選択列やテーブル型には**.ValueConcat()**が必要

これにより、ユーザーは.Valueを付け加えることに気づき、ドロップダウンが正しく初期値を表示するようになりました。

解決

実際に.Valueを追加しただけで、エラーがなくなり、初期値がうまく表示されるようになったそうです。テーブル型なのか文字列型なのか、意外と見落としがちですが、ここをクリアにするだけでトラブルが激減しますよ。


SharePointリストとPowerAppsの連携でよくあるQ&A

SharePointリストとPowerAppsの連携でよくあるQ&A

ここでは、今回の記事に関連して「よくある質問」をまとめました。

Q1. SharePointで複数の選択肢を持つ列を単一選択扱いしたい場合は?

A. SharePoint自体の列設定を「複数選択を許可しない」に変更すればテーブル型ではなくなります。ただし既にデータが入っていると変更が難しいこともあるので、その場合はPowerApps内でListBoxに切り替えるか、Concat()などでうまく対処しましょう。

Q2. DefaultプロパティにThisItem.列名だけを書いたらエラーになるのはなぜ?

A. 先ほど解説したように、選択肢列がテーブル型の場合は文字列として扱えません。そのため、.Valueを付けて文字列として参照する必要があります。「.Valueを付けないとテーブル型」という認識を持っておくと判断しやすいです。

Q3. 新規画面で特定の選択肢をデフォルトにしたいけど、編集時は保存済みの値がほしいときは?

A. If(Form.Mode = FormMode.New, "初期値", ThisItem.列名.Value) という式が定番です。新規作成フォームなのか、既存アイテムを編集するフォームなのかをIf関数で切り分けて制御します。


まとめと今後の応用

まとめと今後の応用

長い記事になりましたが、ここまで読んでくださりありがとうございます。PowerAppsとSharePointリストを連携させると、ノーコード・ローコードでもサクサクと業務アプリが作れちゃう一方で、ちょっとした設定ミスでエラーに苦しむことも多いですよね。今回は「ドロップダウンの初期値がうまく表示されない」という問題について詳しく解説しましたが、ポイントは以下のとおりです。

  1. ItemsプロパティChoices(リスト名.選択肢列名) を設定
  2. Defaultプロパティ には ThisItem.選択肢列名.Value (テーブル型なら.Valueが必須)
  3. 新規と編集で表示したいデフォルトが違う場合は If(Form.Mode = FormMode.New, 〇〇, 〇〇) で切り分け
  4. 複数選択列を扱うときは Concat() で文字列化するなどの工夫

結論

結論としては、「SharePointの選択肢列がテーブル型かどうか」を意識しながら、.Valueをつけるかどうかを判断するとスムーズに設定できます。ChatGPTの回答でヒントをもらったとおり、エラーが出るときは「型の違い」を疑ってみると、今回のようにすぐ解決することが多いです。

応用編:条件分岐やロール別表示など

もし、ユーザーの役職によって表示する初期値を変えたい場合や、日付列と連動して選択肢を動的に変えたい場合は、さらにIf文やFilter関数を使ったりする方法があります。PowerAppsは幅広い拡張が可能なので、今回学んだ「ItemsとDefaultの扱い」をベースにどんどん応用していくと、業務に合ったアプリが自由自在に作れますよ。

よくあるトラブルを未然に防ごう

  • SharePointリストの列設定はあらかじめ確認しておく
  • Defaultに入れる値の型を厳密にチェックする
  • 新規と編集を切り分けるときはIf関数を使う

こうしたポイントを押さえておけば、PowerAppsのドロップダウン設定に関するトラブルはかなり減ります。

コメント

タイトルとURLをコピーしました