GASで地図画像&ルート検索
GAS連携と地図連携の概要
Google Apps Script(GAS)は、Google Workspace のサービスを自動化するためのスクリプト言語です。GAS から Google Maps API を呼び出すことで、地図連携を実現できます。例えば、スプレッドシートに入力された住所を Geocoding で緯度経度に変換し、静的地図(newStaticMap)を生成してメールに添付する、といったワークフローが可能です。
Maps APIで静的地図を取得
静的地図は newStaticMap を使って簡単に生成できます。以下は GAS で静的地図を取得し、スプレッドシートに画像 URL を貼り付けるサンプルです。
function createStaticMap() {
var apiKey = 'YOUR_API_KEY';
var center = '35.6895,139.6917'; // 東京駅
var size = '600x400';
var url = 'https://maps.googleapis.com/maps/api/staticmap?center=' + center + '&size=' + size + '&key=' + apiKey;
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange('A1').setValue(url);
}
この URL をブラウザで開くと、地図画像が表示されます。画像を直接埋め込む場合は <img> タグを使わず、リンクとして貼り付けるのが安全です。
マーカー追加とaddMarker
静的地図にマーカーを追加するには、addMarker パラメータを URL に付与します。複数マーカーを配置する場合は、markers パラメータをカンマ区切りで指定します。
var markers = 'color:red|label:A|35.6895,139.6917, color:blue|label:B|35.6586,139.7454';
var url = 'https://maps.googleapis.com/maps/api/staticmap?center=' + center + '&size=' + size + '&markers=' + encodeURIComponent(markers) + '&key=' + apiKey;
このようにして、複数地点を一枚の地図画像に表示できます。マーカーの色やラベルは自由にカスタマイズ可能です。
ルート検索とgetDirectionFinder
ルート検索は getDirectionFinder を使って実装します。GAS から Directions API を呼び出し、出発点と目的地の経路情報を取得できます。
function findRoute() {
var origin = '35.6895,139.6917';
var destination = '35.6586,139.7454';
var apiKey = 'YOUR_API_KEY';
var url = 'https://maps.googleapis.com/maps/api/directions/json?origin=' + origin + '&destination=' + destination + '&key=' + apiKey;
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
var route = json.routes[0].overview_polyline.points;
Logger.log(route);
}
取得した overview_polyline をデコードして、地図上に折れ線を描画することも可能です。GAS だけで完結する場合は、静的地図に path パラメータを追加してルートを表示します。
Geocodingで住所変換
Geocoding API を使うと、住所文字列を緯度経度に変換できます。GAS での実装例は以下の通りです。
function geocodeAddress() {
var address = '東京都千代田区千代田1-1';
var apiKey = 'YOUR_API_KEY';
var url = 'https://maps.googleapis.com/maps/api/geocode/json?address=' + encodeURIComponent(address) + '&key=' + apiKey;
var response = UrlFetchApp.fetch(url);
var json = JSON.parse(response.getContentText());
var location = json.results[0].geometry.location;
Logger.log(location.lat + ',' + location.lng);
}
取得した緯度経度は、前述の静的地図やルート検索で再利用できます。
まとめ
GAS 連携と地図連携を組み合わせることで、スプレッドシートやフォームから入力された住所を自動で Geocoding し、静的地図(newStaticMap)にマーカーを追加、さらにルート検索(getDirectionFinder)を行うワークフローを構築できます。これにより、営業活動や配送計画、イベント企画など、さまざまな業務で地図情報を活用できます。
実際に試す際は、Google Cloud Console で Maps API と Directions API を有効化し、API キーを取得してください。API キーは安全に管理し、不要になったら無効化することを忘れないでください。
コメント
コメントを投稿