我正在尝试使用Google的.NET Calendar API 检索南非公众假期.
我有以下问题:
EventQuery范围.(在给定日期范围之前和之后)我通过在线查看确认了这个特定的公共日历具有正确的日期.
我最好的猜测是我错误地使用了API,并且我正在查询日历条目的创建/更新日期而不是事件日期.
码:
var feedUrl = "http://www.google.com/calendar/feeds/en.sa%23holiday%40group.v.calendar.google.com/public/full";
var service = new CalendarService("My application name");
var qry = new EventQuery(feedUrl);
qry.StartDate = new DateTime(2011, 1, 1);
qry.EndDate = new DateTime(2012, 1, 1);
EventFeed results = service.Query(qry);
foreach (EventEntry entry in results.Entries)
{
if (entry.Times.Count == 0)
continue;
// Using entry.Times[0].StartTime results in
// missing data and data outside of the given search criteria.
}
Run Code Online (Sandbox Code Playgroud)
我使用的是最新的Google .NET Data …
我正在使用OAuth 2.0 Google API进行Google日历服务身份验证.每次用户登录应用程序时,即使用户已允许访问先前对应用程序的访问,也会提示允许访问.
我如何对其进行编码,以便它记住过去允许用户访问的应用程序和用户,因此不要再为同一个应用程序提示"允许访问".
我试图通过整理一个执行以下操作的简单页面来自学一些JQuery/REST/Google API:
我有#1到#4的工作(虽然毫无疑问是一种丑陋的方式),并且在#5上被绊倒了.这是JQuery ajax调用:
var url = 'https://www.googleapis.com/calendar/v3/calendars/[MY_CALENDAR_ID]/events?sendNotifications=false&access_token=[GOOGLE_API_TOKEN]';
var data = { end: { dateTime: "2012-07-22T11:30:00-07:00" }
, start: { dateTime: "2012-07-22T11:00:00-07:00" }
, summary: "New Calendar Event from API"
};
var ajax = $.ajax({ url: url
, data: data
, type: 'POST'
}).done(addEventDone)
.fail(function (jqHXR, textStatus) {
console.log("addEvent(): ajax failed = " + jqHXR.responseText);
console.log(jqHXR);
});
Run Code Online (Sandbox Code Playgroud)
结果是全局parseError:"此API不支持解析表单编码输入." 前四个步骤都是使用GET ajax调用,所以我不确定这是不是在绊倒我.
以下是相关API:https://developers.google.com/google-apps/calendar/v3/reference/events/insert
我想我可能会做很长很难的事情,我的新方法是使用javascript API解决这个问题,而不是直接使用手动JQuery和REST.这是我尝试前进的方法http://code.google.com/p/google-api-javascript-client/wiki/Samples#Calendar_API,尽管我仍然希望将此作为学习机会,如果有的话简单的事我在上面的代码中搞砸了.
感谢您提供任何帮助,见解,指示等.如果我使用javascript API取得任何进展,我会发布更新.
在任何其他情况下,我会说这是一个错误,但在谷歌的情况下,我可能是错的?
如果您只是在https://www.google.com/calendar/render上打开主页,经过身份验证后,查看其来源,您会惊奇地看到
<!DOCTYPE HTML><head><title>Google Calendar</title><meta ....
Run Code Online (Sandbox Code Playgroud)
它有意义吗?我希望不会,或者相反,我应该再次开始参加HTML课程:)
应该是吗?
<!DOCTYPE HTML><html><head><title>Google Calendar</title><meta ....
Run Code Online (Sandbox Code Playgroud)
对于HTML5开标签?
谢谢!
我使用完整日历在网页上显示一些Google日历.当用户将鼠标悬停在日历上的事件上时,我添加了qTip,以显示完整的事件详细信息(位置,描述等).我希望qTip显示事件的开始/结束时间,格式为:
日期,日期月,开始时间 - 结束时间
与24小时制的时间.
如果我添加event.start和event.end我qTip,然后出现在开始和结束时间,而不是格式正确无误.我想我需要使用formatdate函数,但我无法弄清楚如何.有人可以帮忙吗?我粘贴了下面的代码.
<script type='text/javascript'>
$(document).ready(function() {
$('#calendar').fullCalendar({
eventRender: function(event, element) {
element.qtip({
content: '<b>' + event.title + event.start +' - ' + event.end + '</b><br><br>LOCATION: ' + event.location + '<br><br> AVAILABILITY: ' + event.description
})
},
eventSources: {
url: 'my calendar URL'
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud) 我正在写一个约会表格,让用户选择一个日期.然后,它将按照日期检查Google日历,在上午10:00到下午5:00之间的30分钟时间间隔内查看该日期的可用时段.
在我的Calendar类中,我有一个available_times方法:
def available_times(appointment_date)
appointment_date_events = calendar.events.select { |event| Date.parse(event.start_time) == appointment_date }
conflicts = appointment_date_events.map { |event| [Time.parse(event.start_time), Time.parse(event.end_time)] }
results = resolve_time_conflicts(conflicts)
end
Run Code Online (Sandbox Code Playgroud)
此方法需要一个日期和抓住start_time并end_time在该日期每个事件.然后它调用resolve_time_conflicts(conflicts):
def resolve_time_conflicts(conflicts)
start_time = Time.parse('10:00am')
available_times = []
14.times do |interval_multiple|
appointment_time = (start_time + interval_multiple * (30 * 60))
available_times << appointment_time unless conflicts.each{ |conflict| (conflict[0]..conflict[1]).include?(appointment_time)}
end
available_times
end
Run Code Online (Sandbox Code Playgroud)
当我尝试迭代冲突数组时,会抛出'无法迭代时间'错误.我试图调用to_enum冲突数组但仍然得到相同的错误.
我在SO上看到的所有其他问题都是引用该step方法,这似乎不适用于这种情况.
更新:
Thanks @caryswoveland and @fivedigit. I combined both of your …Run Code Online (Sandbox Code Playgroud) 我正在使用Java Google API客户端,而我正在尝试创建Google日历事件.我的身份验证和日历服务初始化工作正常(我可以登录并获取我的日历事件).创建事件时会发生此问题.这是我的代码:
Event event = new Event();
event.setSummary( title );
event.setStart( new EventDateTime().setDate( new DateTime( new Date() ) ) );
event.setEnd( new EventDateTime().setDate( new DateTime( new Date() ) ) );
return _calendarService.events().insert( GOOGLE_CALENDAR_ID, event ).execute();
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
com.google.api.client.googleapis.json.GoogleJsonResponseException:400错误请求{"code":400,"errors":[{"domain":"global","message":"无效值:\"T \"发现,只能解析裸日期字符串:2014-10-10T15:58:06.165 + 03:00","原因":"无效"}],"消息":"无效值:\"T \"发现,只能解析裸日期字符串:2014-10-10T15:58:06.165 + 03:00"}
我在这里做错了什么想法?
当我尝试嵌入<iframe>日历时,即使我拥有编辑权限,我也会获得仅打印只读日历的标签.
我是否需要在其中添加任何其他参数<iframe>才能启用此功能?
我正在构建(以编程方式)创建Google日历链接的链接。我发现当我通过以下格式的日期时
....&dates=20151005T170000Z/20151007T190000Z&....
我希望它显示5:00 PM到7:00 PM,而显示1:00 PM到3:00 PM
这里是完整的链接:
我唯一的想法是这是一个时区问题,但是在URL的任何地方都看不到。
我正在尝试在Node.js中使用google-api-nodejs-client。我timeMin在freebusy查询中的参数格式有问题。根据docs,值应为ISO格式的timedate。我试过了,但出现错误。在该event.list方法中,ISO格式字符串可以正常工作。
查询freebusy代码:
function freeBusyStatus (auth, calendarId) {
const startDate = new Date('20 February 2018 12:00').toISOString()
const endDate = new Date('20 February 2018 13:00').toISOString()
const check = {
auth: auth,
// timeMin: '2018-02-20T12:00:00+03:00', //not working with same format too
timeMin: new Date('20 February 2018 12:00'),
timeMax: endDate,
items: [{id: calendarId}]
}
calendar.freebusy.query (check, function (err, response) {
if (err) {
console.log ('error: ' + err)
} else {
..some code..
} …Run Code Online (Sandbox Code Playgroud)