はじめに
Power Appsでプルダウンを作成する際、
["A","B","C"]
のように選択肢をアプリ内に直接記述することは少なくありません。
しかし、項目を追加・変更するたびにアプリを修正・公開する必要があり、運用の負荷が高くなります。
そこで今回は、
- SharePoint
- Power Automate
- Power Apps
を利用し、SharePointに配置したプレーンテキストファイルからプルダウンを生成する構成を検証しました。
また、
- 250件のデータでの動作確認
- 複数プレーンテキストファイルへの対応
についても検証しました。
目次
今回の構成
今回の構成は以下です。
Power Apps
▼
Power Automate
▼
SharePointのプレーンテキスト
▼
改行で分割
▼
JSON
▼
Power Apps
▼
Dropdown
Power AppsからPower Automateを呼び出し、SharePoint上のテキストファイルを取得します。
取得した内容を改行で分割し、JSONとしてPower Appsへ返却します。Power Apps側ではParseJSONでコレクション化し、Dropdownへ表示します。
基本検証
テキストファイル
今回はSharePointのドキュメントライブラリ内にDropdownItemsフォルダを作成し、配置しました。
Power Automateの実装
Power Automateでは以下の流れで処理を行います。
- SharePoint上のテキストファイルを取得
- 改行で分割
- JSON文字列としてPower Appsへ返却
シンプルな構成ですが、Power Apps側で扱いやすい形式になります。

Power Appsの実装
画面が表示されたタイミングで最新のテキストファイルを取得できるよう、Screen1 の OnVisible に処理を実装しました。
Set(
varResult,
GetDropdownItems.Run()
);
ClearCollect(
colDropdownItems,
ForAll(
Table(ParseJSON(Text(varResult.itemsjson))),
{
Value: Text(ThisRecord.Value)
}
)
)
取得したコレクションをDropdownのItemsへ設定します。
colDropdownItems
これにより、画面表示時に最新のテキストファイルの内容が反映されます。
動作確認
アプリを実行したところ、テキストファイルに記載した内容がプルダウンへ表示されることを確認しました。

250件で性能検証
続いて250件のアイテムを格納したテキストファイルへ変更し、
- 250件表示できるか
- Power Automateの実行時間
結果
250件すべて正常に表示されました。
Power Automateの実行時間は606msでした。
今回の検証では250件程度であれば問題なく利用できることを確認できました。

複数プレーンテキストへの対応
続いて、1ファイルではなく複数ファイルに対応できる構成も検証しました。
今回は以下の3ファイルを追加しました。
- Status.txt
- Country.txt
- CustomerType.txt
Power Automateの変更
基本構成では1ファイルだけ取得していましたが、
複数ファイルを取得する構成へ変更しました。
取得した内容をJSONへまとめてPower Appsへ返却します。

Power Apps側
Power Appsでは返却されたJSONを解析し、
まずcolDropdownFilesへ格納します。
その後、
- colStatusItems
- colCountryItems
- colCustomerTypeItems
を生成し、それぞれDropdownへ設定しました。
動作確認
アプリを実行し、各Dropdownへ正しい内容が表示されることを確認しました。
さらにStatus.txtへ
Test1
Test2
Test3
を追加し、画面を再表示したところ、変更内容が反映されることを確認できました。
実行時間
複数ファイル構成でもPower Automateの実行時間を確認しました。
- 初期状態
- 1ファイルへ3行追加後
どちらも約3秒でした。
まとめ
- SharePointのプレーンテキストからプルダウンを生成できる
- Power AppsからPower Automateを呼び出して最新データを取得できる
- 250件でも約606msで取得できる
- 複数プレーンテキストファイルにも対応できる
ことを確認できました。
プルダウンの選択肢をSharePointで管理したい場合の構成の一例として、参考になれば幸いです。
最後までご覧いただきありがとうございました!





