応用編ツイートこんにちは、あんこ先生です。SharePointリストに多くのレコードを短い時間で書き込みたくありませんか?普段、繰り返し処理はForAll関数を使っていますが、数十レコードでも数分待たされることがあります。待てないことはありませんが、速いに越したことはないですよね。実はPatch関数の使い方次第で、速度は劇的に改善します。今回もPatch関数のすばらしさをなんとかして伝えたい!その思いで、「レコードをまとめて登録したい」、「条件を絞ってまとめて更新したい」といった中級者の方を対象に、Patch関数の使い方を解説します。Patch関数やForAll関数って何?という方は先にこちらの記事を読んでください。基本編2022.08.12関連記事PowerApps│繰り返し処理ならコレ!ForAll関数の便利な使い方2022.04.12Patch関数の概要Patch関数は、データソース内で1つ以上のレコードを作成したり変更したりできます。1回1レコードに対して処理できますが、テーブルを与えることで複数レコードをまとめて処理することができます。与えるテーブルについて、すこしコツが必要なのでパターン別に紹介していきますね。データソースはなんでも構いませんが、SharePointリストに対して、更新用のコレクションを与えて、レコードをまとめて作成・変更してみます。左側がオリジナルのSharePointリスト、右側が更新用のコレクションです。変更点をわかりやすくするため、一致しない部分を色付けしてます。ボタンを押すと、Patch関数に更新用コレクション(テーブル)を与えて更新します。更新用コレクションの構成は、上図のとおり4つの列です。SharePointリストも自動作成される列を除けば同じ構成です。多いと1画面に収まらないので絞っていますが、数を増やしても処理に支障はありません。これらを使って、進めていきますね。Teamsを使う場合は、コレクションに主キーを含めてください。更新の方がかんたんなのでこちらから紹介します。図のように既存レコードの一部をまとめて書き換える処理です。入力済みデータの商品コードや数量を間違えていたとします。1件ずつ修正したものを更新してもよいのですが、数が多いとちょっとモヤモヤします。先にすべての修正を行い、見直してからまとめて更新する感じです。ForAll関数でもサクっとできますが、件数が増えると処理時間が段違いなのでPatch関数で行います。すべての項目列を含めるはじめに更新用コレクションを作成します。入力の都度、次のコードが実行されコレクションに格納されます。})登録有無にかかわらず一度消してから、登録しなおしています。これは新規or既存ならの条件分岐を無視できるためです。注意点として、更新の場合は必ず一意の主キーが必要となります。SharePointリストならID列がそのまま使えますよ。なんとか更新用コレクションができたら更新ボタンを押します。ボタンのコードは次の通りです。Patch(SPOリスト,col更新用)たったこれだけです。単一レコード更新よりシンプルです。処理速度も速く、100件くらいなら数秒で終わります。更新対象が1件の場合でも、レコード特定を省略できるメリットがありますよ!項目列を絞る今度は不要な項目列を含めないパターンです。例では取引日を更新用コレクションに含めていません。このコレクションを与えて実行した場合、データソースの取引日列は更新されません。これはPatch関数の特性で、与えていない項目列の値は既存を維持するためです。ちなみに、コレクション作成時に不要な列を除かなくても、DropColumns関数であとから除外することもできます。主キーが存在しないレコードを含むデータソースにはない主キーを含むレコードがある場合です。結論から言いますと、そのレコードは作成も更新もされません。次のようなエラーが表示されます。その更新用コレクションに主キーが存在するレコードがあった場合、それは更新されます。上図なら主キー1001-1003は存在しないのでエラー、4-5は更新されます。ならないんですが、更新前にIDが存在するか確認するステップがあると安心ですね。次はレコードをまとめて作成します。やり方は更新とほぼ同じです。Patch関数は主キーが存在するか否かで、更新と作成が切り替わります。パターン別にみていきましょう。主キーを含まない更新用コレクションを作る際に、主キー列を外したまたは空にしたパターンです。Patch関数にこのテーブルを与えると、データソースに新しいレコードを作成します。ボタンのコードは変わりません。Patch(SPOリスト,col更新用)主キーを含む更新用コレクションに主キーを含んだ場合、データソースにその主キーがあれば更新されます。なかった場合はエラーとなり、更新も作成もされません。主キーいれてコレクションつくっちゃったし・・・そんなときはDropColumns関数で列ごと消してしまいましょう。Patch(SPOリスト,DropColumns(col更新用,"ID"))DropColumns関数は、指定した項目列をテーブルから除外する関数です。要らない項目列の方が多い場合は、ShowColumns関数で残したい列を指定できますよ。DropColumns関数とShowColumns関数は一生使うことはないと思っていたのですが、使ってみるととても便利でした。Patch関数の使い方のまとめ今回はPatch関数に更新用のテーブルを与える方法を解説しました。主キーと対象の項目列さえ準備できれば、まとめて更新できるので便利ですよね。コードはシンプル、そしてすごく速い。更新時間が短いとアプリユーザーからも評価高いので、ぜひマスターしてください。PowerApps│チェックリストアプリを少し使いやすくする方法2022.09.15PowerApps│フォームを使ったチェックリストアプリの作り方2022.09.11PowerApps│領収書を発行してメール送付するアプリの作り方2022.08.30PowerApps│アクセス権のないプランにタスクをまとめて登録する方法2022.07.09ご支援よろしくおねがいしますこの記事を気に入ってくださった方、寄付してあげてもいいよという方がいらっしゃっいましたら、ご支援いただけると助かります。下記リンクからAmazonギフト券で、金額は15円からお気持ちを入力してください。メッセージもいただけるとたいへん喜びます。コメントをキャンセルメールアドレスが公開されることはありません。※サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。US七草あんこ非IT系中間管理職やってます。社命によりoffice365を主軸とした業務改善プロジェクトメンバーに任命されたことでPowerAppsと出会えました。いまではビジネス・プライベートを問わず、欠かせないツールになっています。導入初期やアプリ作成時に遭遇した諸問題の解決法とサンプルアプリの作り方を紹介していきます。Twitterで情報収集しているので不明点など呟いているとお邪魔するかもしれません。