Google api 如何使用谷歌API从谷歌日历中获取当前或下一个事件? 介绍

Google api 如何使用谷歌API从谷歌日历中获取当前或下一个事件? 介绍,google-api,google-calendar-api,Google Api,Google Calendar Api,我正在尝试更换一部“随叫随到”的手机,它由随叫随到的程序员在指定的日期携带。如果有紧急情况,服务台会拨打该手机。我们现在正计划切换到一个网络表单,在紧急情况下由服务台填写。提交表单后,脚本将与Google calendar(使用php api)对话,查看谁在待命,并向当时待命的程序员发送一条短信,提醒他/她紧急情况。如果当前没有人待命,那么下一个待命的人将收到一封电子邮件,以便他们第二天早上第一件事就是处理这个问题。除了重复发生的事件外,所有这些都可以正常工作 在我决定让查询处理当前事件的检索(

我正在尝试更换一部“随叫随到”的手机,它由随叫随到的程序员在指定的日期携带。如果有紧急情况,服务台会拨打该手机。我们现在正计划切换到一个网络表单,在紧急情况下由服务台填写。提交表单后,脚本将与Google calendar(使用php api)对话,查看谁在待命,并向当时待命的程序员发送一条短信,提醒他/她紧急情况。如果当前没有人待命,那么下一个待命的人将收到一封电子邮件,以便他们第二天早上第一件事就是处理这个问题。除了重复发生的事件外,所有这些都可以正常工作

在我决定让查询处理当前事件的检索(而不是自己检索一堆事件并手动检查时间)之前,处理单个事件并将其设置为true效果很好。例如,如果有人当前正在通话,则应存在并返回具有该程序员姓名的当前事件。此事件可能会或可能不会重复发生,取决于某人是否交易天数。如果目前没有安排任何活动,那么我会选择其他人,向下一个待命人员发送电子邮件,而不是发送短信。在else部分中,我将未来的最大开始时间切换为7天


查询代码如下所示。
采取的步骤 1) 我创建了一个周期性事件,从8-5一直持续到周期结束。
2) 然后,我删除一个事件(测试某人的交易日),并添加另一个咯咯笑的事件(其他事件不是必需的,但有助于显示问题)

有关以下数据的信息:
在查询范围中删除的定期事件标题为“Ben”,而在当天实际计划的第二个非定期事件称为“test”。返回标题、开始时间和结束时间时的输出如下所示。请记住,日历上没有“Ben”事件,但无论如何它会显示3次,即使开始时间限制设置得非常严格(请参见代码中的$now)


使用$query->setSingleevents(false);"
使用“$query->setSingleevents(true)”;"
对结果的解释 我真的只希望函数返回某个人的单个名称(即仅当前事件)。如果当前事件不存在,则我将在接下来的7天内提取事件,以确保捕获任何周末和假日,并返回第一个即将到来的事件

上面的第二个输出(单事件设置为true)看起来解决了问题,但它仅在存在非周期性事件时才解决问题。如果我将所有内容保持周期性,则如果我设置了SingleEvents(true),则不会返回任何数据

我有一种预感,这与我将最小和最大开始时间设置为$now(当前时间)有关,但由于这对非重复事件很有效,我不明白问题是什么(特别是当我试图将重复事件视为它们自己的单个事件时)

同样,除非我使用重复事件(在我看来,每周手动添加次数不是一个很好的解决方案),否则这一切似乎都很好

--
谢谢你的帮助,

Ben

事件有一个事件状态。我能够在开发机器上通过以下操作解决这个问题。我不确定这是做事情的最好方式,但它完成了任务。不幸的是,我在测试机器上遇到了困难,我不明白为什么它不能在那里工作。我决定这可能是由于一些疯狂的差异php的两个版本中都有一个新版本

$eventStatusUrl = $event->getEventStatus();
list($trash, $eventStatus) = explode('#', $eventStatusUrl);
if ($eventStatus == 'event.confirmed') {
    return $event->title->text;
}

事件有一个事件状态。我能够在开发机器上通过如下操作解决这个问题。我不确定这是做事情的最漂亮的方式,但它完成了工作。不幸的是,我在测试机器上遇到了困难,我无法理解为什么它在那里不工作。我决定这可能是由于在php的两个版本

$eventStatusUrl = $event->getEventStatus();
list($trash, $eventStatus) = explode('#', $eventStatusUrl);
if ($eventStatus == 'event.confirmed') {
    return $event->title->text;
}
2010-05-03T13:30:00.000-05:00
2010-05-03T15:00:00.000-05:00
test
$eventStatusUrl = $event->getEventStatus();
list($trash, $eventStatus) = explode('#', $eventStatusUrl);
if ($eventStatus == 'event.confirmed') {
    return $event->title->text;
}