はじめに
Power Appsで簡単にかつ、表記揺れ少なく住所の登録を行うとしたらどういう方法があるかな?
とちょっと考えてみたので、いくつか案を記載します。
もっといい案などあればコメント等していただけると嬉しいです!
入力想定
入力想定としてはこんな感じ。
よくある郵便番号を入力したら、その結果をもとに都道府県、市区町村、町名までの入力を補完してくれるやつです。
郵便番号から住所を検索する
Bing Mapsコネクタの利用
Power PlatformのコネクタにはBing Mapsコネクタがあります。
こちらは標準コネクタなので追加のライセンスなしで利用することができます。
ただし利用にはAPI Keyが必要になります。
API Keyの発行はこちらで行うことができます。
とりあえず開発目的で試してみるだけでしたら無料で発行することが可能です。
今回郵便番号から検索を行いたいので「住所で場所を取得する(GetLocationByAddress
)」を利用します。
例えば以下のように取得することできますね。
BingMaps.GetLocationByAddress({postalCode:Form1.Updates.部屋番号,countryRegion:"JP"})
今回欲しい(と思われる)情報はaddress
にあるので以下のように取得します。
UpdateContext({getAddress: BingMaps.GetLocationByAddress({postalCode:Form1.Updates.部屋番号,countryRegion:"JP"}).address})
とりあえず日本マイクロソフト本社がある住所で試してみました。
その結果はこちらです。
うーーん。。。
一応参考までに.addressを指定せずに生の値をそのまま取得した場合はこちらになります。
欲しい情報とれてないですねー。。。
ということで、このコネクタを利用することでは今回の目的は達成できなさそうです。
ちなみにこれ、日本だからできないのかな?と思いましたが、USでもなんか上手く動いてないっぽい?
国コードを"US"に変更して、Microsoft US本社の住所で検索してみます。
UpdateContext({getAddress: BingMaps.GetLocationByAddress({postalCode:Form1.Updates.部屋番号,countryRegion:"US"})})
結果はこちら
うーん。残念!
ちなみにこちらのAPIの元になっていると思われるこちらのAPIを実行した場合の結果も参考までに以下で載せておきます。
日本Microsoftの郵便番号で検索
url
https://dev.virtualearth.net/REST/v1/Locations/JP/1080075?o=json&key={BingMapsKey}
Result
{ "authenticationResultCode": "ValidCredentials", "brandLogoUri": "https://dev.virtualearth.net/Branding/logo_powered_by.png", "copyright": "Copyright © 2024 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.", "resourceSets": [ { "estimatedTotal": 1, "resources": [ { "__type": "Location:http://schemas.microsoft.com/search/local/ws/rest/v1", "bbox": [ 35.623119354248047, 139.7376708984375, 35.6387825012207, 139.7593994140625 ], "name": "108-0075, Japan", "point": { "type": "Point", "coordinates": [ 35.63023758, 139.74839783 ] }, "address": { "countryRegion": "Japan", "formattedAddress": "108-0075, Japan", "locality": "Tokyo", "postalCode": "108-0075" }, "confidence": "High", "entityType": "Postcode1", "geocodePoints": [ { "type": "Point", "coordinates": [ 35.63023758, 139.74839783 ], "calculationMethod": "Rooftop", "usageTypes": [ "Display" ] } ], "matchCodes": [ "Good" ] } ] } ], "statusCode": 200, "statusDescription": "OK", "traceId": "26207454a1105398697042f88fe1c17b|PUS000DE1E|0.0.0.1|Ref A: 112EC9BA7E5642DAAAC907663DE1764B Ref B: SEL20EDGE0205 Ref C: 2024-01-30T17:47:30Z" }
US Microsoftの郵便番号で検索
url
http://dev.virtualearth.net/REST/v1/Locations/US/98052?o=json&key={BingMapsKey}
Result
{ "authenticationResultCode": "ValidCredentials", "brandLogoUri": "https://dev.virtualearth.net/Branding/logo_powered_by.png", "copyright": "Copyright © 2024 Microsoft and its suppliers. All rights reserved. This API cannot be accessed and the content and any results may not be used, reproduced or transmitted in any manner without express written permission from Microsoft Corporation.", "resourceSets": [ { "estimatedTotal": 1, "resources": [ { "__type": "Location:http://schemas.microsoft.com/search/local/ws/rest/v1", "bbox": [ 47.626979827880859, -122.16493225097656, 47.734012603759766, -122.07723236083984 ], "name": "98052, WA", "point": { "type": "Point", "coordinates": [ 47.67053604, -122.12073517 ] }, "address": { "adminDistrict": "WA", "adminDistrict2": "King County", "countryRegion": "United States", "formattedAddress": "98052, WA", "locality": "Redmond", "postalCode": "98052" }, "confidence": "High", "entityType": "Postcode1", "geocodePoints": [ { "type": "Point", "coordinates": [ 47.67053604, -122.12073517 ], "calculationMethod": "Rooftop", "usageTypes": [ "Display" ] } ], "matchCodes": [ "Good" ] } ] } ], "statusCode": 200, "statusDescription": "OK", "traceId": "a455e74cba328865371503122ff44e28|PUS000DE25|0.0.0.1|Ref A: 24130242C72E483CACE4E5068CCC4967 Ref B: SEL20EDGE0405 Ref C: 2024-01-30T17:51:47Z" }
仮にこちらのAPIを用いてカスタムコネクタを自作しても、日本語の住所は取れなさそうですので日本向けに利用することを考えると、ちょっと微妙ですかね。。。
郵便番号APIサービスからカスタムコネクタを作成する
郵便番号検索APIサービスを利用してカスタムコネクタを作成し、それを用いて郵便番号から住所の検索を行ってみます。
今回は"zipcloud"というサービスを利用してみようと思います。
選定理由は無料で使えて、またリクエストやレスポンスがシンプル、欲しい情報が取れそう。というだけですので、もちろん他にもいいサービスはあるとは思います。
これじゃなきゃダメってわけじゃないですよ。
カスタムコネクタを作成する
- 「カスタムコネクタの新規作成」より「一から作成」を選択します。
- 適当なコネクタ名を入力します。
- ドキュメントより、ベースとなるURLは以下のように記載されています。
ベースとなるURLは以下になります。
https://zipcloud.ibsnet.co.jp/api/search
このURLにリクエストパラメータを加え、リクエストを行います。 - ということで以下のように設定します。
- こちらのAPIは認証情報を特に必要としないので、続いて定義を作成します。
- 最後に接続情報を作成した後にテストをしましょう。
アプリから呼び出す
あとは、こちらのコネクタをアプリに追加して使ってみます。
UpdateContext({searchAddress: zipcloud.SearchAddress({zipcode: Form1.Updates.郵便番号}).results})
結果はこんな感じ
いい感じに取得できてますねー
おまけ
Microsoft Listには列の種類で「場所」というものがあります。
ここに郵便番号を入力すると、候補がでてきます。
どれ選べばいいんだ...?
まず上の北品川を選んだ場合
北品川区ってどこですか...?というか日本Microsoftは品川区にあった...?
続いて港南
港南は区ではないですね。おしい。
続いて最後
ダメな気がしましたがダメですね!
ちなみにこちらPower Appsから更新することはできません。
おわりに
現状Power Appsで日本の住所検索を行う場合は外部APIを利用するのが一番欲しい結果が得られそうですね。