我是JavaScript,JQuery和Google API的新手,因此对这个问题的回答可能是一个非常简单的事情,我忽略了这一点。我已经检查了本网站上所有可用的Google Calendar Freebusy问题,但我无法设法让他们的答案以任何方式适合我的代码。
我正在尝试为检查公共日历的freebusy查询的html页面编写脚本。谷歌表示,HTTP请求应
POST https://www.googleapis.com/calendar/v3/freeBusy
与
{
"timeMin": datetime,
"timeMax": datetime,
"timeZone": string,
"groupExpansionMax": integer,
"calendarExpansionMax": integer,
"items": [
{
"id": string
}
]
}
我现在的HTML页面包含了最新的jQuery库的请求的身体,我在写剧本。调用页面上的脚本会导致Failed to load resource: the server responded with a status of 400 (Bad Request)
错误。进一步深入到错误的信息将返回"This API does not support parsing form-encoded input."
我的脚本语法错误,看起来像这样:
(function ($) {
$.GoogleCalendarFreebusy = function (options) {
var defaults = {
apiKey: '[projectkey]',
getID: '[id]@group.calendar.google.com',
element: '#div'
};
options = $.extend(defaults, options);
$.post('https://www.googleapis.com/calendar/v3/freeBusy?key=' + options.apiKey,
{"items":[{"id": getID }],"timeMin":"2015-04-10T14:15:00.000Z","timeMax":"2015-04-20T23:30:00.000Z"}, "null", "json")
.done(function(data) {
loaded(data);
});
function loaded(data) {
var status = data.calendars[getID].busy;
console.log(status);
if(status.length !== 0) {
for(var i = 0; i < status.length; i++) {
var statusEntry = status[i];
var startTime = statusEntry.start;
var endTime = statusEntry.end;
}
var now = new Date().toISOString();
var element = options.element ;
var name = element.substr(1);
if (now > startTime && now < endTime){
$(options.element).append('Available!');
}
else {
$(options.element).append('Unavailable!');
}
} else {
$(options.element).append('Unavailable!');
}
}
};
})(jQuery);
我的请求被接受的Google Explorer "Try It"适当的反应,所以我认为这可能是JavaScript错误/ JSON请求我忽略了?预先感谢您的帮助和建议。
您正在查看的日历是公开的吗?否则,您将需要进行身份验证。 – luc
日历设置为公开[仅共享我的空闲/忙碌信息]。随着日历设置更改为纯粹公开,我仍然收到400错误的请求错误。 – Akai
尝试在此附加引号:{“items”:[{“id”:“[id] @ group.calendar.google.com”}],“timeMin”:“2015-04-10T14:15:00.000Z “,”timeMax“:”2015-04-20T23:30:00.000Z“} – luc