Googleマップでルートを検索し、ルート詳細を表示してから実行してください。
- ブックマークバーを表示する (Ctrl + Shift + B)。
- ブックマークバー上で右クリックし「ページを追加」を選択する。
- 「タイトル」は好きに入力する。
- 「URL」に javascript:(function ... から始まるコード (maps2calender.js) をペーストする。
- 保存ボタンを押す
Googleマップで経路検索をし、詳細を表示した状態でインストールしたブックマークを押す
javascript:(function () { | |
if (document.URL.indexOf('/am=t') < 0) { | |
alert('詳細画面で実行してください'); | |
return; | |
} | |
var e = encodeURIComponent; | |
var q = document.querySelectorAll.bind(document); | |
var text = function () { | |
var wp = q('.waypoint-address:not([style*="display"]) .first-line span'); | |
var from = wp[0].innerText; | |
var to = wp[wp.length - 1].innerText; | |
return e(from + ' → ' + to); | |
}; | |
var details = function () { | |
return e(document.URL); | |
}; | |
var dates = function () { | |
var z = function(x) { | |
return ('00' + x).slice(-2); | |
}; | |
var utcMsec = function (msec) { | |
var d = new Date(msec); | |
return d.getUTCFullYear() + z(d.getUTCMonth() + 1) + z(d.getUTCDate()) + 'T' + z(d.getUTCHours()) + z(d.getUTCMinutes()) + '00Z'; | |
}; | |
var parseTransitTime = function (span) { | |
var h = parseInt(span.innerText.split(' ')[0].split(':')[0], 10); | |
var m = parseInt(span.innerText.split(' ')[0].split(':')[1], 10); | |
var ampm = span.innerText.split(' ')[1]; | |
if (ampm === 'PM' && h < 12) { | |
h += 12; | |
} | |
return { hour: h, minutes: m }; | |
}; | |
var transitTime = q('.cards-directions-transit-trip-time span'); | |
var start = parseTransitTime(transitTime[0]); | |
var end = parseTransitTime(transitTime[1]); | |
var duration = q('.cards-directions-duration-value')[0].innerText; | |
var today = new Date(); | |
var todayLabel = q('.date-input')[0].innerText; | |
if (todayLabel.match(/(\d+)\s*月\s*(\d+)\s*日/)) { | |
var monthNames = ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]; | |
todayLabel = monthNames[parseInt(RegExp.$1, 10) - 1] + ' ' + RegExp.$2; | |
} | |
var startMsec = Date.parse(todayLabel + ' ' + today.getFullYear() + ' ' + start.hour + ':' + start.minutes + ':00'); | |
if (!startMsec) return; | |
if (startMsec < today.getTime()) { | |
var sd = new Date(startMsec); | |
sd.setMonth(sd.getMonth() + 1); | |
startMsec = sd.getTime(); | |
} | |
if (duration.match(/(\d+)\s*h\s*(\d+)\s*min/) || duration.match(/(\d+)\s*時間\s*(\d+)\s*分/)) { | |
var endMsec = startMsec + (parseInt(RegExp.$1) * 60 + parseInt(RegExp.$2)) * 60 * 1000; | |
} else if (duration.match(/(\d+)\s*min/) || duration.match(/(\d+)\s*分/)) { | |
var endMsec = startMsec + parseInt(RegExp.$1) * 60 * 1000; | |
} | |
return utcMsec(startMsec) + '/' + utcMsec(endMsec); | |
}; | |
var d = dates(); | |
if (d) { | |
var href = 'http://www.google.com/calendar/event?action=TEMPLATE&text=' + text() + '&details=' + details() + '&dates='+ d + '&location=&trp=true'; | |
window.open(href); | |
} | |
})(); |
Googleマップでルートを検索し、ルート詳細を表示してから実行してください。
Googleマップで経路検索をし、詳細を表示した状態でインストールしたブックマークを押す