郵便番号から住所を取得するAPIを使ってみる
今回はひとまず認証とか事前登録とかが一切不要なAPIを使って試してみることにしました。そういうAPIを探してみたところこちらを見つけました。
解説を読んでみるとすぐにわかりますが、URLの中にパラメータとして郵便番号を与えてやると、JSON形式で住所が返ってきます。
ためしに、以下のURLをブラウザで開いてみてください。
https://zipcloud.ibsnet.co.jp/api/search?zipcode=1000001
すると、以下のような情報が表示されます。なるほどね!という感じ。
つまり、HTTP要求をして返ってくる情報をクラウドフローのなかでほかのアクションと同じように使えるようにするということなんですね。
この程度であれば、単純に HTTP 要求アクションを使えば済みますが、
- 認証情報を含めたい
- ヘッダーをあらかじめ設定したい
- わかりやすい名前で再利用したい
といった場合に、それらをカスタムコネクタとして定義しておく、というのがカスタムコネクタの役割だ、という理解をしました。
ソリューションを作成する
ソリューションが作成出来たら、
新規>自動化>カスタムコネクタ を選択します。
- ホスト:zipcloud.ibsnet.co.jp
- ベース URL:/api
- 認証タイプ:認証なし
定義
「定義」では、作成するカスタムコネクタの 表示名や説明 を指定します。
おそらくここに入力した内容が、そのままフロー上で表示される アクション名 になるのでしょう。
また重要なのが 操作 ID。
文字列自体は任意ですが、後から見ても「何をするコネクタなのか」がわかる名前を付けておくのがよさそうです。
要求
「サンプルからのインポート」をクリックすると、右側にペインが開きます。
ここに、先ほどブラウザで試した URL と、結果として返ってきた JSON を貼り付けます。
これで、どんな入力を与えると、どんな出力が返ってくるのか を Power Automate が理解してくれるわけですね。
一番下までスクロールして 「検証に成功」 と表示されていることを確認したら、次の「コード」画面に進みます。

コード
コードの画面は特に何も設定しなくてよいらしい。「テスト」へ進みます。

テスト
……何じゃらほい?
とりあえず、画面右上の 「✓ コネクタの作成」 をクリックしてみます。

全般タブに戻って説明を30文字以上になるように書き替えました。

再度「全般」画面に戻りました。
ここに入れんのかい!! わかりにくくないですか?

どうやら日本語はNGの様子。
zipcloud_postalcode_connector にしたら進めました。
zipcodeに適当な郵便番号を入力した状態で、「テスト操作」の「新しい接続」をクリックしてみます。

接続日付のようなものが表示されると、画面一番下に「テスト操作」という青いボタンが表示されました。準備ができたみたい。

「テスト操作」をクリックすると、結果が返ってきました。要求と応答を見比べて、これを送ったらこんなの返ってきましたとうのが確認できるわけですね。
応答200なので成功。ここで404とかそのほかが出てきたらパラメータ指定やURLが違うということなのでしょう。
ちょっとわかりにくいけれども、テストができた時点ですでにカスタムコネクタは保存されているので作成完了ということのようです。
カスタムコネクタ一覧
テスト画面から画面右上の「閉じる」をクリックすると、一覧が表示され作成済みであることがわかります。アイコンも「全般」のところで設定しておいたほうがよかったかな?ちょっとそっけない。
三点ボタンの中身はこんな感じ。POSTMANから更新できそうなのは興味深いです。
カスタムコネクタをクラウドフローで使う
どうやら作成ができたようなので、実際にクラウドフローの中で使ってみます。
「カスタム」カテゴリにこのように表示されました。自分が設定した表示名との対応を見てみると、なるほどこういう感じなのか! とわかり味が深いです。これはやってみないとつかめないな。
だって、画面の遷移が感覚的ではないんだもの。
開いてみると、なんだか入力が多すぎるなぁ。
なるほど作成時の「定義」の時に必要な入力項目以外は削除しておく必要があるのですね。
こういうのもやってみてわかること。
適当な郵便番号を与えてテスト実行してみると、ちゃんとJSONで結果が返ってきました!
やっぱり初見ではとっつきにくいインターフェイスだなぁという印象。でも一度試してみれば仕組みは案外簡単であることがわかりました。
まとめ
今回はカスタムコネクタを認証なしのAPIを使って初めて作成してみました。気づきとしては以下のような点が挙げられます。
- コネクタの名前には日本語は使えず
- 実際にクラウドフロー上で表示されるのは「概要」の部分。これがアクション名になる
- 定義ではインプットとして不要なヘッダーは削除しておく
- コードの項目は任意、飛ばしてよい
- テスト前に「コネクタの作成」をクリックすることでカスタムコネクタが作成されている
今回は認証なしのカスタムコネクタを作成しましたが、認証ありの場合や、APIキーを持つような場合に、アクションとして利用したときに秘匿されているのかとか。DLPポリシーでカスタムコネクタを制御できるのかなども検証してみようと思っています。
こんな人が書いてます。
こちらの記事はランゲルハンス島のDDさんが紹介しました。ブログでクラウドフローのTIPSのようなものを書いたり、Qiita記事を書いたりしていますのでご贔屓に。
フォローやいいねいただけると嬉しいです。
関西のPowerPlatform系の勉強会にときどき出没しますので、気軽に声をかけていただけると喜びます!
おまけ
更新ができるなら新規も?と思ったので「+カスタムコネクタの新規作成」というところをクリックしてみたらご覧の選択肢が。 なるほど公開されているようなものを取り込んで使えるわけですね? ちょっとわかってきた。
画面上の下向き矢印をクリックすると、このカスタムコネクタを構成するJSONファイルがダウンロードできました。
{
"swagger": "2.0",
"info": {
"title": "Default title",
"description": "ZipCloud API を使用して郵便番号から日本の住所情報を取得するカスタムコネクタです。",
"version": "1.0"
},
"host": "zipcloud.ibsnet.co.jp",
"basePath": "/api",
"schemes": [
"https"
],
"consumes": [],
"produces": [],
"paths": {
"/search": {
"get": {
"responses": {
"default": {
"description": "default",
"schema": {}
}
},
"summary": "郵便番号から住所を取得",
"description": "ZipCloud API を使用して、郵便番号から都道府県・市区町村・町域を取得します。",
"operationId": "GetAddressByZipcode",
"x-ms-visibility": "important",
"parameters": [
{
"name": "zipcode",
"in": "query",
"required": false,
"type": "integer"
},
{
"name": "{",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"message\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"results\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"address1\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"address2\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"address3\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"kana1\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"kana2\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"kana3\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"prefcode\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"zipcode\"",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "}",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "],",
"in": "header",
"required": false,
"type": "string"
},
{
"name": "\"status\"",
"in": "header",
"required": false,
"type": "integer"
}
]
}
}
},
"definitions": {},
"parameters": {},
"responses": {},
"security": [],
"tags": [],
"securityDefinitions": {}
}















