Power Apps 郵便番号 住所の自動入力 — 外部 API を使わないモデル駆動アプリの方法
- DATE
- 2026-10-28
- REVISION
- A
- AUTHOR
- スルガクラフト合同会社
- SHEET
- 01 / 01
「Power Apps で郵便番号を入れたら住所が出てほしい」。顧客管理を作ると、最初に言われる要望のひとつです。
この記事が扱うのはモデル駆動アプリです。キャンバスアプリは対象外です。
モデル駆動アプリには、この機能が標準でありません。で、検索すると出てくるのは外部の住所検索 API を呼ぶ方法です。ただ、会社によっては DLP ポリシーで外部への通信を止めていて、その方法が使えません。
この記事の方法は、外部 API を呼びません。日本郵便が配っている郵便番号データを、自分の Dataverse にテーブルとして入れておきます。フォームで郵便番号を入れると、そのテーブルを引いて住所を埋めます。
どう動くか
- 日本郵便の郵便番号データ(住所の郵便番号・全国一括・UTF-8)を、SharePoint などに置く
- データフロー(Power Query)が、そのファイルを読んで Dataverse のテーブルに入れる。1郵便番号が1行
- フォームのスクリプトが、郵便番号の入力のたびに、そのテーブルを引いて住所の列に写す
スクリプトは判断をしません。数字だけを取り出す、テーブルを引く、列に写す。この3つだけです。値の判断は、データフローが作るテーブルの側に寄せてあります。

複数の町域がある番号は、確実な階層までしか埋めない
日本郵便のデータには、1つの郵便番号に複数の町域が入っているものがあります。さらに、都道府県をまたぐ番号もあります。
この部品は、確実に1つに決まる階層までしか埋めません。たとえば市区町村までは決まるが町域は決まらない番号は、都道府県と市区町村だけを埋めて、町域は空にします。都道府県をまたぐ番号は、3つとも空にします。間違った住所を入れるより、空のほうがいいからです。
入力を変えたとき、前の住所を残さない
郵便番号を直したときに、前の住所が残ると、郵便番号と住所がちぐはぐになります。そこで、次の場合は住所の列を空にします。
| 入力 | 動き |
|---|---|
| 7桁の番号がテーブルにある | 住所を埋める |
| 郵便番号を空にした | 住所を空にする(通知は出さない) |
| 7桁にならない | 住所を空にして、「7桁の数字で入力してください」と通知する |
| 7桁だが、テーブルにない | 住所を空にして、「見つかりません」と通知する |
ハイフンの有無、全角、〒つきは、どれも同じ番号として扱います。
写し先は、テーブルで決める
どのテーブルの、どの列に、どんな形で写すかは、対応表のテーブルに1列1行で書きます。初期値として、contact・account・systemuser の address1_postalcode から、address1_stateorprovince(都道府県)・address1_city(市区町村)・address1_line1(町域)に写す9行を入れてあります。
「住所を1列にまとめたい」なら、書式を {都道府県}{市区町村}{町域} にした行を1つ足します。請求先と配送先の両方に使いたいなら、郵便番号の列ごとに行を足します。スクリプトは変えません。
対象外のもの
- 事業所の個別郵便番号(
100-8111のような大口の事業所用)。入れるのは「住所の郵便番号」だけです。ここに載っていない番号は「見つかりません」になります - 町域が複数ある番号での、候補の選択。いまは町域を空にするだけです
更新のしかた
日本郵便のデータは月ごとに更新されます。更新しなくても動き、新しい番号は「見つかりません」になるだけです。目安は四半期に1回。
更新は、同じ名前のファイルを上書きして、データフローを更新します。全件の入れ直しで、私の検証環境では30分前後かかりました。更新中も、すでに入っている番号は引けます。ただ、フォームの動きは遅くなったので、業務時間外にやってください。
途中までしかないファイルで更新しても、データを消さないように、読み込んだ行数が10万行に満たなければ、データフローが失敗して何も書き込まない仕組みを入れてあります。
容量
マスタは約12万行で、私の環境で約36MBでした。Dataverse のデータベース容量です。
自分で作るときに外せないところ
- 郵便番号の列は文字列にする。 数値にすると先頭の0が落ちます(001-0010 などが壊れます)。データフローが「変更された列タイプ」を自動で足すので、消してください
- 郵便番号の列に代替キーを付ける。 データフローが更新のとき、行をその場で書き換えるために使います
- 「クエリ出力に存在しない行を削除します」をオンにする。 オンにしないと、日本郵便のデータから消えた番号が残ります
- 行数のガードを入れる。 オンにした状態で途中までのファイルを読むと、私の検証では約4.4万行が消えました。読み込んだ行数が少なければエラーにする手順を、クエリの最初に入れてください
整形(1番号に複数の町域があるときの扱い)は、データフローの Power Query で行います。
導入を任せたい場合は、お問い合わせからご相談ください。
確認していないこと
- 一般ユーザーのセキュリティロールでの動作。ロールは導入先で決める前提で、私は確認していません
- データフローの定期更新(スケジュール)
- SharePoint 以外の場所(OneDrive の URL など)をファイルの置き場にしたとき