【GAS】2点間の距離測定【スプレッドシート】

img_642571317 Google Apps Script

Google Maps Platformの「Distance Matrix API」を使用します。

東京タワーとスカイツリー

東京タワーとスカイツリーの距離(10.9km)

東京ドームと甲子園球場

東京ドームと甲子園球場の距離(508km)

福岡ドームと札幌ドーム

福岡ドームと札幌ドーム(2,117km)

Distance Matrix API

img_64257451

Google Cloud Platformが提供している機能で、出発地と目的地から、距離や移動時間を計算できるサービスです。

プロジェクトを作成し、APIキーを取得します。(従量課金制、無料枠あり)

APIとサービス▶認証情報▶鍵を表示します から取得してください。

GAS

img_64257555
function calculateDistance() {
  // スクリプトプロパティからAPIキーを取得
  var apiKey = PropertiesService.getScriptProperties().getProperty('API_KEY');

  // スプレッドシートのシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // セルB1とB2から地名を取得
  var origin = sheet.getRange('B1').getValue();
  var destination = sheet.getRange('B2').getValue();

  // 地名が両方とも入力されているか確認
  if (!origin || !destination) {
    sheet.getRange('B3').setValue('出発地と目的地を入力してください');
    return;
  }

  // Distance Matrix APIのエンドポイント
  var url = 'https://maps.googleapis.com/maps/api/distancematrix/json?' +
            'origins=' + encodeURIComponent(origin) +
            '&destinations=' + encodeURIComponent(destination) +
            '&key=' + apiKey;

  try {
    // APIを呼び出し、レスポンスを取得
    var response = UrlFetchApp.fetch(url);
    var json = JSON.parse(response.getContentText());

    // 距離を取得してセルB3に出力
    if (json.rows[0].elements[0].status === 'OK') {
      var distance = json.rows[0].elements[0].distance.text;
      sheet.getRange('B3').setValue(distance);
    } else {
      sheet.getRange('B3').setValue('距離を計算できませんでした');
    }
  } catch (e) {
    sheet.getRange('B3').setValue('エラーが発生しました: ' + e.message);
  }
}

コピペでOKです。

次に、スクリプトプロパティを設定します。

img_6425767

歯車アイコンから、取得したAPIキーを貼り付けてください。

お手軽に距離の測定が可能です。

タイトルとURLをコピーしました