2

プロジェクトを作成し、https: //code.google.com/apis/console を使用して登録しました (「その他」のアプリケーション タイプを選択しました)。すると、インストール済みアプリの「Client ID」が取得できました。

次に、コンソールに移動してイベントを作成し、oauth 2 を使用して承認しました 。https: //developers.google.com/google-apps/calendar/v3/reference/events/insert すべて正常に機能しました。

    POST https://www.googleapis.com/calendar/v3/calendars/primary/events?key={YOUR_API_KEY}

Content-Type:  application/json
Authorization:  xxx
X-JavaScript-User-Agent:  Google APIs Explorer

{
 "end": {
  "dateTime": "2013-1-16T10:00:00.000-07:00"
 },
 "start": {
  "dateTime": "2013-1-16T10:00:00.000-07:00"
 }
}

応答

200 OK

- Show headers -

{

 "kind": "calendar#event",
 "etag": "\"WANTVF5ixxZ04U_VtQ0AZ3MbAlM/Z2NhbDAwMDAxMzY1NjU0MzAwNTk1MDAw\"",
 "id": "2nsuis19mkp2q0uef54tl5nk68",
 "status": "confirmed",
 "htmlLink": "https://www.google.com/calendar/event?eid=Mm5zdWlzMTlta3AycTB1ZWY1NHRsNW5rNjggaXZhbjEzMzEzM0Bt",
 "created": "2013-04-11T04:25:00.000Z",
 "updated": "2013-04-11T04:25:00.595Z",
 "creator": {
  "email": "ivan133133@gmail.com",
  "displayName": "ivan rozhcov",
  "self": true
 },
 "organizer": {
  "email": "ivan133133@gmail.com",
  "self": true
 },
 "start": {
  "dateTime": "2013-01-16T21:00:00+04:00"
 },
 "end": {
  "dateTime": "2013-01-16T21:00:00+04:00"
 },
 "iCalUID": "2nsuis19mkp2q0uef54tl5nk68@google.com",
 "sequence": 0,
 "reminders": {
  "useDefault": true
 }
}

次に、id をコピーしてこのイベントを更新しました。 https://developers.google.com/google-apps/calendar/v3/reference/events/update更新 初めて200件の返信が来ました。

PUT https://www.googleapis.com/calendar/v3/calendars/primary/events/2nsuis19mkp2q0uef54tl5nk68?key={YOUR_API_KEY}

Content-Type:  application/json
Authorization:  Bearer ya29.AHES6ZRmo6pdxj8pY4NmzdI1estRNB-v87XV7xQHgyhrWHk2rzs3Ke8
X-JavaScript-User-Agent:  Google APIs Explorer

{
 "end": {
  "dateTime": "2013-1-16T10:00:00.000-07:00"
 },
 "start": {
  "dateTime": "2013-1-16T10:00:00.000-07:00"
 }
}

しかし、これをもう一度試してみると、常に400エラーが発生しました。エラーテキストは以下に書かれています。

https://developers.google.com/google-apps/calendar/v3/reference/events/updateアップデート

400 Bad Request

cache-control:  private, max-age=0
content-encoding:  gzip
content-length:  123
content-type:  application/json; charset=UTF-8
date:  Wed, 10 Apr 2013 12:49:29 GMT
expires:  Wed, 10 Apr 2013 12:49:29 GMT
server:  GSE

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "invalid",
    "message": "Invalid Value"
   }
  ],
  "code": 400,
  "message": "Invalid Value"
 }
}

それが google.api のバグなのか、どこかで間違っているのか、誰か説明できますか?

異なるアカウントと PC から試してみました (Google API Explorer と python ライブラリで同じ結果が得られました)。

今日、私はそのバグを再現しようとしました。しかし、エバーリングは今ではうまく機能しています。Google コードで問題を作成しました http://code.google.com/a/google.com/p/apps-api-issues/issues/detail?id=3371&thanks=3371&ts=1365599378 まだ回答がありません。

一時的なバグだったと思います。

4

4 に答える 4

2

これを確認してください: Google Calendar API - can only update event once およびこれ: Google Calendar api v3 re-update issue

イベントの日付/時刻を変更するときは、シーケンス番号を増やす必要があります。これが、400 - Bad request が発生する理由です。

これは、Javaクライアントライブラリを使用して解決した方法です。

mGoogleCalendarEvent には、イベントに関する更新情報が含まれています。まず、GoogleCalendar からこのイベントのシーケンス番号を取得します。

mGoogleCalendarEvent.setSequence(mService.events().get(mCalendarId,mGoogleCalendarEvent.getId()).execute().getSequence());

そして、更新を実行します。

mService.events().update(mCalendarId, mGoogleCalendarEvent.getId(),mGoogleCalendarEvent).execute();
于 2014-09-21T19:00:45.183 に答える
1

更新の代わりにパッチを使用しましたが、今では問題なく動作しています。しかし、更新が最初に成功し、2 回目以降に失敗した理由がよくわかりません。完全な謎。

于 2013-04-10T14:03:13.143 に答える
0

Javascript 用の Google API クライアント ライブラリを使用して Google カレンダー API にアクセスすると、まったく同じ問題が発生しました。カレンダー イベントの開始日を更新しようとすると発生します。最終データの更新は問題ありません。本当に奇妙です。

幸いなことに、アップデートをパッチに置き換えることで問題を修正することもできました。

于 2013-05-24T07:32:34.760 に答える