2026.04 / REV.01 ARTICLE
ARTICLE / ZIPCODE-ADDRESS-MODEL-DRIVEN

Power Apps 郵便番号 住所の自動入力 — 外部 API を使わないモデル駆動アプリの方法

DATE
2026-10-28
REVISION
A
AUTHOR
スルガクラフト合同会社
SHEET
01 / 01

「Power Apps で郵便番号を入れたら住所が出てほしい」。顧客管理を作ると、最初に言われる要望のひとつです。

この記事が扱うのはモデル駆動アプリです。キャンバスアプリは対象外です。

モデル駆動アプリには、この機能が標準でありません。で、検索すると出てくるのは外部の住所検索 API を呼ぶ方法です。ただ、会社によっては DLP ポリシーで外部への通信を止めていて、その方法が使えません。

この記事の方法は、外部 API を呼びません。日本郵便が配っている郵便番号データを、自分の Dataverse にテーブルとして入れておきます。フォームで郵便番号を入れると、そのテーブルを引いて住所を埋めます。

どう動くか

  1. 日本郵便の郵便番号データ(住所の郵便番号・全国一括・UTF-8)を、SharePoint などに置く
  2. データフロー(Power Query)が、そのファイルを読んで Dataverse のテーブルに入れる。1郵便番号が1行
  3. フォームのスクリプトが、郵便番号の入力のたびに、そのテーブルを引いて住所の列に写す

スクリプトは判断をしません。数字だけを取り出す、テーブルを引く、列に写す。この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 など)をファイルの置き場にしたとき

関連

  • 郵便番号の次は、承認・帳票・採番です。Power Apps の承認に差し戻しがない、帳票が出せない、連番がずれる、で困っているなら、製品ページを見てください
  • 相談はお問い合わせから
← BACK TO BLOG END OF SHEET