8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

住所一覧から到達予測時刻を計算する(Googleスプレッドシート+Google Distance Matrix API)

Last updated at Posted at 2018-03-16

目的

 「ある時間・ある場所を起点として、複数の場所に行く場合のそれぞれの到着予測時刻」を一挙に計算したかった。
 具体的に言うと、定時後に会社ビルから色んなところ(日によって異なる)に行く場合に、それぞれいつ頃到着するのか、Google Mapや駅すぱあとで一々調べていくのは面倒だったので、自動化できないかなーと考えたのが始まりです。

 Google App Scriptの利用は初めてだったので、学習を兼ねてコーディングしました。
 情報共有のため、本記事を作成しました。(ある程度)

#結論
 算出できました。
 出発時間に「求めた移動時間」を加算すれば、到着予想時刻を求められます。
ss.png

#内容
 以下のコードによります。
 Google Distance Matrix APIのAPIキーは、Google Maps Distance Matrix API - API をアクティベートして API キーを取得するで取得できます。

※注: URLパラメータのうち "mode='transit'" だけは、なぜかシングルクォートでくくらないと正しい出力が帰ってきません。

gas1.gs
function calcDptTimeFromSpecificPlaces() {
  var colDst = 2;      // 住所列
  var colRes = 3;      // 結果出力列
  var APIKEY = "hoge"; // Google Distance Matrix APIのAPIキー
  
  var bk = SpreadsheetApp.getActiveSpreadsheet();
  var sh = bk.getActiveSheet();
  var rowLst = sh.getLastRow();
  
  for (var i = 2; i <= rowLst; i++) {   // 2行目から処理
    var org = "皇居"; // 起点となる場所
    var dst = sh.getRange(i, colDst).getValue();
    var url = "https://maps.googleapis.com/maps/api/distancematrix/json?units=metric" + 
              "&language=" + "ja" +
              "&origins=" + org + 
              "&destinations=" + dst +
              "&mode=" + "'transit'" +
              "&departure_time=" + "1521220500" + // "2018/3/16 17:15:00" のUNIXタイム
              "&key=" + APIKEY;
    
    var res  = UrlFetchApp.fetch(url);
    var json = JSON.parse(res.getContentText());
    
    if (json["status"] == "OK") {
      var str_min = json["rows"][0]["elements"][0]["duration"]["text"];
      var min = str_min.replace("", '');   // "分"を除去
      min = "00:" + min + ":00";             // hh:mm:ss の形式にする
      sh.getRange(i, colRes).setValue(min);
    }
  }
}

#課題・展望

  • 移動時間1時間以上に対応していません。
  • 住所は、ググって手入力しています。"皇居"はAPIで通りますが、お店や会社名などは通ったり通らなかったりなので。だから**「地名から住所を出力するAPI」**なんかがあったら、地名入力しただけで到着時間が算出できるようになるため、捗りそう。

#文献

8
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?