주소 목록에서 도달 예측 시간 계산(Google 스프레드시트 + Google Distance Matrix API)
목적
"어느 시간·한 장소를 기점으로 하여 여러 장소에 갈 경우 각각의 도착 예측 시간"을 일거에 계산하고 싶었다.
구체적으로 말하면, 정시 후에 회사 빌딩에서 여러 곳(일에 따라 다름)에 가는 경우에, 각각 언제쯤 도착할지, Google Map나 역 스파아토에서 일단 조사해 가는 것이 귀찮았으므로, 자동화 할 수 없을까라고 생각한 것이 시작입니다.
Google App Script의 이용은 처음이었으므로, 학습을 겸해 코딩했습니다.
정보 공유를 위해 본 기사를 작성했습니다. (어느 정도)
결론
산출할 수 있었습니다.
출발 시간에 「구한 이동 시간」을 가산하면 도착 예상 시간을 요구합니다.
내용
이하의 코드에 따릅니다.
Google Distance Matrix API의 API 키는 Google Maps Distance Matrix API - API를 활성화하여 API 키 가져오기에서 얻을 수 있습니다.
※ 주 : URL 파라미터 중 "mode = 'transit'"만은 왠지 싱글 쿼트로 구하지 않으면 올바른 출력이 돌아 오지 않습니다.
gas1.gsfunction 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);
}
}
}
과제·전망
산출할 수 있었습니다.
출발 시간에 「구한 이동 시간」을 가산하면 도착 예상 시간을 요구합니다.
내용
이하의 코드에 따릅니다.
Google Distance Matrix API의 API 키는 Google Maps Distance Matrix API - API를 활성화하여 API 키 가져오기에서 얻을 수 있습니다.
※ 주 : URL 파라미터 중 "mode = 'transit'"만은 왠지 싱글 쿼트로 구하지 않으면 올바른 출력이 돌아 오지 않습니다.
gas1.gsfunction 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);
}
}
}
과제·전망
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);
}
}
}
문헌
Google Maps Distance Matrix API - 개발자 가이드 : URL 파라미터 이해에 유용합니다.
teratail - Google Maps Distance Matrix API에서 mode에 transit을 지정하면 도보로 획득 : 'transit'을 싱글 쿼트로 오는 것은 여기에서 알았습니다.
Qiita - GoogleDriveSpreadSheet의 주소록을지도에 플롯 @ 타테스케 : 비슷한 일을 하고 있는 사람 있는 거야~라고 생각하면, 친구였다.
Reference
이 문제에 관하여(주소 목록에서 도달 예측 시간 계산(Google 스프레드시트 + Google Distance Matrix API)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Suibari_cha/items/5a38b35a413c11f8800d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)