GoogleCalendarParsingDate.js
by
efcl
2013-12-04 [2013/12/04 10:19:43]
Selecting date text to Google Calendar
@@ -42,9 +42,9 @@
return ('_' + Math.pow(10, len) + str).slice(-len);
}
function formatDateString(date) {
- var date = date.getFullYear() + format0(date.getMonth() + 1, 2) + format0(date.getDay(), 2);
+ var TDate = date.getFullYear() + format0(date.getMonth() + 1, 2) + format0(date.getDay(), 2);
var times = format0(date.getUTCHours(), 2) + format0(date.getUTCMinutes(), 2) + format0(date.getUTCSeconds(), 2);
- return date + "T" + times + "Z";
+ return TDate + "T" + times + "Z";
}
function buildURL(parameters) {
var action = parameters.action || "TEMPLATE";
/*
* @title GoogleCalendarParsingDate.js
* @description Selecting date text to Google Calendar
* @include http://*
* @license MIT License
* @require https://rawgithub.com/berryboy/chrono/master/chrono.min.js
*/
(function main() {
var selectText = getSelectingText();
var parsingDates = chrono.parse(selectText);
var dates = buildDate(parsingDates[0]);
var url = buildURL({
"text": document.title,
"details": document.title + "\n" + window.location.href,
"dates": dates
});
openURL(url);
})();
function openURL(url) {
location.assign(url);
}
function getSelectingText() {
return window.getSelection().toString();
}
function buildDate(chronoDate) {
if (typeof chronoDate === "undefined") {
return;
}
var startDateText = formatDateString(chronoDate.startDate);
var endDateText = chronoDate.endDate ? formatDateString(chronoDate.endDate) : null;
if (startDateText && endDateText) {
return startDateText + "/" + endDateText;
} else {
return startDateText + "/" + startDateText;
}
}
function format0(str, len) {
return ('_' + Math.pow(10, len) + str).slice(-len);
}
function formatDateString(date) {
var TDate = date.getFullYear() + format0(date.getMonth() + 1, 2) + format0(date.getDay(), 2);
var times = format0(date.getUTCHours(), 2) + format0(date.getUTCMinutes(), 2) + format0(date.getUTCSeconds(), 2);
return TDate + "T" + times + "Z";
}
function buildURL(parameters) {
var action = parameters.action || "TEMPLATE";
var text = parameters.text || "";
var details = parameters.details || "";
var dates = parameters.dates || "";
var location = parameters.location || "";
var url = 'https://www.google.com/calendar/b/1/render?' +
'action=' + action +
'&text=' + encodeURIComponent(text) +
'&details=' + encodeURIComponent(details) +
'&location=' + encodeURIComponent(location) +
'&dates=' + dates +
'&trp=true' +
'&sprop=website:' + window.location.href
return url;
}
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。