▽1
●
ku__ra__ge![]() |
Google Distance Matrix API
https://developers.google.com/maps/documentation/distancematrix/?hl=ja
を利用して出発場所、到着場所のリストからそれぞれの所要時間を出すスクリプトを作ってみました。
出発すべき時刻は求めていませんが、所要時間がわかれば到着時刻から逆算することで求められるかと思います。
次のようなExcel表を用意して、
A列(出発場所) | B列(到着場所) |
---|---|
広島駅 | 東京駅 |
京都駅 | 東京駅 |
神奈川駅 | 東京駅 |
下記のVBAスクリプト(GetAllDistanceTime)を実行してみてください。
Public Function GetAllDistanceTime() Set r = Range("A1") Do While r.Value <> "" r.Offset(0, 2).Value = GetDistanceTime(r.Offset(0, 0).Value, r.Offset(0, 1).Value) Set r = r.Offset(1, 0) Loop End Function Private Function GetDistanceTime(sFrom, sTo) As String sApiUrl = "http://maps.googleapis.com/maps/api/distancematrix/xml?origins={0}&destinations={1}&sensor=false&language=ja" sSendUrl = sApiUrl sSendUrl = Replace(sSendUrl, "{0}", UrlEncode(sFrom)) sSendUrl = Replace(sSendUrl, "{1}", UrlEncode(sTo)) Set oHttpReq = CreateObject("MSXML2.XMLHTTP") oHttpReq.Open "GET", sSendUrl, False Call oHttpReq.send(Null) Set oDomDoc = CreateObject("MSXML2.DOMDocument") Call oDomDoc.loadXML(oHttpReq.responseText) GetDistanceTime = oDomDoc.selectSingleNode("//DistanceMatrixResponse/row/element/duration/text").Text Set oHttpReq = Nothing Set oDomDoc = Nothing End Function Private Function UrlEncode(sText) As String If sText = "" Then Exit Function With CreateObject("ScriptControl") .Language = "JScript" With .CodeObject UrlEncode = .encodeURI(sText) End With End With End Function