将活动开始日期从 "date" 更改为 "dateTime"
Changing event start date from "date" to "dateTime"
我正在尝试使用 Google API Explorer
用新的开始和结束日期修补现有事件
所以我现在的活动是这样的
{
"kind": "calendar#event",
"etag": "\"2912997881756000\"",
"id": "3fpkrr85sdfdgsdfsdsdflgn7vk74qhiv2o",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=M2Zwa3JsdfsdfyODVudWZobGduN3ZrNzRxaGl2Mm8gZHlsbsdfsdfi5pb19xNjUwcWRhcnYyam9vYWYzcTdudmhpc2ZvNEBn",
"created": "2016-02-26T14:32:33.000Z",
"updated": "2016-02-26T15:02:20.878Z",
"summary": "aaaa",
"creator": {
"email": "xxxx@yyy.com",
"displayName": "name"
},
"organizer": {
"email": "xxxxxx@group.calendar.google.com",
"displayName": "Display",
"self": true
},
"start": {
"date": "2016-02-26"
},
"end": {
"date": "2016-03-02"
},
"iCalUID": "3fpkrr85nufasdfsdfsadfasdfhlgn7vk74qhiv2o@google.com",
"sequence": 2,
"reminders": {
"useDefault": true
}
}
我从 Google API Explorer 发出的请求是这样的
PATCH https://www.googleapis.com/calendar/v3/calendars/ddfdfdfdfdf%40group.calendar.google.com/events/3fpkrr85nufhlgn7sdfsafdfdsghgffdhvk74qhiv2o?fields=start&key={YOUR_API_KEY}
{
"start": {
"dateTime": "2016-02-16T12:00:00+01:00"
},
"end": {
"dateTime": "2016-02-18T13:00:00+01:00"
}
}
但我总是得到以下错误
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid start time."
}
],
"code": 400,
"message": "Invalid start time."
}
}
我猜这是因为事件是一个 All Day
事件,这意味着 start
是一个 Date
字段,我正在发送 DateTime
但这正是我想做的事。我不能简单地将 start
和 end
的类型从 Date
更改为 DateTime
吗?
更新
这是路径请求的php代码
$client = $this->container->get('google.calendar.client');
$client->setAccessToken($this->auth()->getIdentity()->getGoogleAccessToken());
$service = new \Google_Service_Calendar($client);
$event = new \Google_Service_Calendar_Event($eventData);
$event = $service->events->patch($this->auth()->getIdentity()->getGoogleCalendarId(), $item->getGoogleId(), $event);
$item->setGoogleId($event->getId());
$this->getItemRepo()->save($item);
剩余日期似乎有问题。将日期明确设置为空有效:
{
"start": {
"dateTime": "2016-02-16T12:00:00+01:00",
"date": null
},
"end": {
"dateTime": "2016-02-18T13:00:00+01:00",
"date": null
}
}
我知道这是一个旧线程,但我只是在 PHP SDK 中遇到了同样的错误,因此有一个简短的信息:在 PHP SDK 中,Goole_Model Class: Google_Model::NULL_VALUE
。如果你不使用这个,所有设置为 "normal" null
的字段都会被删除,永远不会被发送到 Google API,因此补丁请求会失败。
我正在尝试使用 Google API Explorer
用新的开始和结束日期修补现有事件所以我现在的活动是这样的
{
"kind": "calendar#event",
"etag": "\"2912997881756000\"",
"id": "3fpkrr85sdfdgsdfsdsdflgn7vk74qhiv2o",
"status": "confirmed",
"htmlLink": "https://www.google.com/calendar/event?eid=M2Zwa3JsdfsdfyODVudWZobGduN3ZrNzRxaGl2Mm8gZHlsbsdfsdfi5pb19xNjUwcWRhcnYyam9vYWYzcTdudmhpc2ZvNEBn",
"created": "2016-02-26T14:32:33.000Z",
"updated": "2016-02-26T15:02:20.878Z",
"summary": "aaaa",
"creator": {
"email": "xxxx@yyy.com",
"displayName": "name"
},
"organizer": {
"email": "xxxxxx@group.calendar.google.com",
"displayName": "Display",
"self": true
},
"start": {
"date": "2016-02-26"
},
"end": {
"date": "2016-03-02"
},
"iCalUID": "3fpkrr85nufasdfsdfsadfasdfhlgn7vk74qhiv2o@google.com",
"sequence": 2,
"reminders": {
"useDefault": true
}
}
我从 Google API Explorer 发出的请求是这样的
PATCH https://www.googleapis.com/calendar/v3/calendars/ddfdfdfdfdf%40group.calendar.google.com/events/3fpkrr85nufhlgn7sdfsafdfdsghgffdhvk74qhiv2o?fields=start&key={YOUR_API_KEY}
{
"start": {
"dateTime": "2016-02-16T12:00:00+01:00"
},
"end": {
"dateTime": "2016-02-18T13:00:00+01:00"
}
}
但我总是得到以下错误
{
"error": {
"errors": [
{
"domain": "global",
"reason": "invalid",
"message": "Invalid start time."
}
],
"code": 400,
"message": "Invalid start time."
}
}
我猜这是因为事件是一个 All Day
事件,这意味着 start
是一个 Date
字段,我正在发送 DateTime
但这正是我想做的事。我不能简单地将 start
和 end
的类型从 Date
更改为 DateTime
吗?
更新
这是路径请求的php代码
$client = $this->container->get('google.calendar.client');
$client->setAccessToken($this->auth()->getIdentity()->getGoogleAccessToken());
$service = new \Google_Service_Calendar($client);
$event = new \Google_Service_Calendar_Event($eventData);
$event = $service->events->patch($this->auth()->getIdentity()->getGoogleCalendarId(), $item->getGoogleId(), $event);
$item->setGoogleId($event->getId());
$this->getItemRepo()->save($item);
剩余日期似乎有问题。将日期明确设置为空有效:
{
"start": {
"dateTime": "2016-02-16T12:00:00+01:00",
"date": null
},
"end": {
"dateTime": "2016-02-18T13:00:00+01:00",
"date": null
}
}
我知道这是一个旧线程,但我只是在 PHP SDK 中遇到了同样的错误,因此有一个简短的信息:在 PHP SDK 中,Goole_Model Class: Google_Model::NULL_VALUE
。如果你不使用这个,所有设置为 "normal" null
的字段都会被删除,永远不会被发送到 Google API,因此补丁请求会失败。