スキップしてメイン コンテンツに移動

GASで地図画像&ルート検索

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 キーは安全に管理し、不要になったら無効化することを忘れないでください。

この記事はAIによって作成されました。

コメント