📍

Azure Maps Geocoding API を使って SharePoint Online リストの住所から位置情報を取得する

に公開

はじめに

SharePoint Online リストの場所 (Location) 列は、簡単に住所を登録できる便利な機能です。しかし、Bing Map と連携しているものの、入力内容によっては位置情報が取得できません。安定して位置情報を取得するために、Power Automate を活用して住所から自動的に位置情報を取得する方法を紹介します。

実行手順

リストの設定

結果の位置情報を格納するための位置情報 (Geolocation) 列は GUI では作成できないため、PowerShell を使って追加します。

https://learn.microsoft.com/ja-jp/sharepoint/dev/general-development/how-to-add-a-geolocation-column-to-a-list-programmatically-in-sharepoint/?WT.mc_id=M365-MVP-5002941

場所列も追加します。場所列から生成された位置情報も確認したいので座標をビューに追加します。結果として以下のようなリストになります。

アイテムを追加してみます。座標がうまく表示されていません。

Azure Maps の作成

住所から位置情報を取得する方法として、Power Automate では Bing Maps コネクタが提供されています。ただし Bing Maps for Enterprise は非推奨となっているため、今回は Azure Maps を使用します。Azure Maps は現時点で Gen2 のみ利用可能で、位置情報は月 5,000 回まで無料で実行できます。

https://azure.microsoft.com/ja-jp/pricing/details/azure-maps/

Azure Maps については特に難しい設定はありません。フローで使用するため、クライアント ID と共有キーを控えておきます。

フローの作成

フローの全体像は以下の通りです。無限ループを防ぐため、場所列が変更されたときのみ動作するようにします。場所が入力されている場合とそうでない場合で分岐します。入力されている場合は API を呼び出して結果を位置情報列に設定します。入力されていない場合は位置情報列に null を設定します。

Azure Maps Geocoding API については以下のドキュメントを参照してください。

https://learn.microsoft.com/en-us/rest/api/maps/search/get-geocoding?WT.mc_id=M365-MVP-5002941

query パラメーターに場所列の内容を渡します。先ほど取得したクライアント ID と共有キーをそれぞれ設定します。

位置情報列は通常の更新アクションではできないため、HTTP リクエストを使って更新します。Azure Maps Geocoding API では配列で位置情報が返ってきますが、経度 (Longitude)、緯度 (Latitude) の順です。

本文の内容は以下のようになります。

{
  "Geolocation": {
    "Latitude": @{body('Azure_Maps_Geolocation_API_にリクエストを送信する')['features'][0]['geometry']['coordinates'][1]},
    "Longitude": @{body('Azure_Maps_Geolocation_API_にリクエストを送信する')['features'][0]['geometry']['coordinates'][0]}
  }
}

実行結果

フローを実行すると位置情報が設定されることを確認できます。

おわりに

モダン UI では地図を直接表示できませんが、Power BI などと連携することで住所情報を地図上に可視化できます。今回紹介した方法を活用することで、SharePoint Online のリストに登録した住所データをさまざまな用途に展開できます。

Discussion