はじめに
Power Platformの検証作業などでSharePointOnlineのカスタムリストが必要になることってありませんか?
さらに、たくさんの検証用レコードを含んだ状態でのカスタムリスト作成には少し工夫が必要です。
例えばインポート機能だと下図のようにExcelやCSVから作成できますが、使い勝手が悪いケースもあります。
・カスタムリスト特有のデータ型が存在するリスト
・大量のレコードを含むリスト
このようなとき、Power Automateでフローを用意することで手軽にリストを作成できます。
今回は、そんな検証用カスタムリストを作成する手順についてご紹介します。
フローでレコードを作成するカスタムリストの準備
Power Automateのフローでカスタムリストを作成すると記載しましたが、今回、カスタムリストそのものは手動で定義します。
フローは指定したリストのレコードを追加する役割となります。
まずはDevList001の命名で空のカスタムリストを作成します。
その後、下記の内容に沿って各カラムを追加します。
カラム名 | 種類 | 設定内容 ※既定値から変更が必要な箇所のみ記載 |
タイトル | 1行テキスト | 既定で作成されるカラムです。 変更不要。 |
option | 選択肢 | 選択肢:option1,option2,option3 既定値:なし 複数選択を許可:いいえ |
date | 日付と時刻 | 時間を含める:いいえ |
number | 数値 | 小数点以下の桁数:0 桁区切り記号を使用する:いいえ |
index | 数値 | 小数点以下の桁数:0 桁区切り記号を使用する:いいえ |
最後に、システム作成列のうちID列を表示させます。
列の追加から列の表示と非表示を切り替えるを押下して、ID列にチェックを付けてください。
ここまで設定したら、下図のようなカスタムリストの定義が出来ていると思います。
Power Automateのフロー作成
ここからは前項で作成したカスタムリストにレコードを追加するフローを作成します。
今回のフローの全体像はこちらです。
新しいデザイナーの操作に慣れていない場合は、画面右上のトグルからオフに切り替えてください。
各アクションの設定値を解説します。
選択肢リストの定義
変数(Variable)から[変数を初期化する]アクションを追加します。
Valueに関して、前項で作成したカスタムリストのoption列に選択肢として定義したものを一覧で設定してください。
Name
選択肢リスト ※任意の値で問題ありません。
Type
Array(配列)
Value
[
“option1”,
“option2”,
“option3”
]
それぞれに適用する
コントロール(Control)の[それぞれに適用する]アクションを追加します。
数式で下記を設定します。
range(1,3000)
range関数は指定した整数から始まる整数の配列を返します。
range(1,3000)では[1,2,…,2999,3000]の配列が作成され、その要素の数だけ繰り返し処理が行われます。
今回のフローでは繰り返し回数=レコード作成数になりますので、目的に合わせて数値を変更いただいて問題ありません。
過去の時間の取得
さきほどの[それぞれに適用する]アクションのループ内に、日次(Date Time)の[過去の時間の取得]アクションを追加します。
Interval
数式で下記を設定します。
rand(0,366)
Time Unit
Day
rand関数を用いることで指定した範囲からランダムな整数を返します。
注意点として、最小の数値は返す範囲に含みますが、最大の数値は返す範囲に含みません。
rand(0,366)であれば 0~365 の中からランダムな数値を返す処理になります。
すなわち、このアクションではフローが実行された当日から過去1年以内の日付がランダムで取得されることになります。
項目の作成
同様に[それぞれに適用する]アクションのループ内に、SharePointの[項目の作成]アクションを追加します。
サイトのアドレス
対象のサイトを選択。
リスト名
DevList001を選択。
詳細パラメーター
タイトル・Option・Date・Number・Indexの5項目を選択。
タイトル
下記の内容を貼り付けてください。
タイトル@{items(‘それぞれに適用する’)}
Option Value
下記の内容を貼り付けてください。
@{variables(‘選択肢リスト’)[rand(0,3)]}
Date
下記の内容を貼り付けてください。
@{formatDateTime(body(‘過去の時間の取得’),’yyyy-MM-dd’)}
Number
下記の内容を貼り付けてください。
@{rand(0,10000)}
Index
動的なコンテンツから[それぞれに適用する]のCurrent itemを選択。
タイトルではループ内のCurrent itemを用いてタイトル1,タイトル2,タイトル3…といったテキストが設定されます。
Optionは配列変数(選択肢リスト)からランダムな値が設定されます。
配列は配列名[インデックス]で要素を取得できるため、インデックスをrand関数でランダムな数値にすることでこれを実現しています。
Dateは[過去の時間の取得]アクションで取得した日時情報をカスタムリストの日付型のフォーマットに合うように成形したものを設定しています。
Numberはrand関数を用いることで 0~9999 の中からランダムな数値が設定されます。
Indexではループ内のCurrent itemをそのまま設定することでID列と同じ値が作成されます。
Index列を作成する理由
カスタムリストに自動で定義されるID列は自動採番の数値であり、一見使い勝手が良さそうに思えます。
カスタムリストから直接ID列でソートやフィルターなどをかけるだけであれば問題ありませんが、PowerAppsからそうした操作を行う際に委任できない処理になりやすいです。
コネクタのリファレンスでは下記のように記載されています。
テーブルの SharePoint ID フィールドは、Power Apps の数字フィールドです。 しかしながら、SharePoint は、IDフィールドでの委任に対して等しい (‘=’) 操作のみをサポートします。
本記事ではPowerAppsにおける委任についての解説は行いませんが、PowerAppsでの検証を目的に検証用カスタムリストを作成するのであれば、ID列と同じ役割を果たすIndex列を別途用意することを推奨します。
フローの実行と結果
ここまでフローを作成したら保存して、実行します。
私が3000レコードの作成フローを実行した結果、24分で完了しました。
カスタムリストは下図のように作成されております。
3000件すべては写せないのでIDを降順にして表示しております。
option・date・numberがランダムな値になっていること、indexがIDと同じになっていることが確認できると思います。
作成するレコード数によっては、すぐに「作成完了!!」…とはいきませんが、安定して検証用リストを作成できるツールとしては利用価値のあるものだと思います。
このツールは一度作ってしまえばカスタムリストの定義とフローのテンプレートを配布するだけで誰でも使えるのが利点だと考えています。
皆様のお役にたてれば幸いです。