2

サービス アカウントを使用して Google Calendar API を介してイベントを挿入しようとしています。目標は、すべてのユーザーが表示できる 1 つのカレンダーを作成することです。つまり、サーバー間のセットアップです。

今のところ、カレンダー API を適切に呼び出して、そのカレンダーのイベントを一覧表示できます。

var moment = require("moment"),
    googleapis = require("googleapis"),
    googleCal = googleapis.calendar("v3");
    serviceEmail = "********@developer.gserviceaccount.com",
    serviceKeyFile = "./key.pem";

var authClient = new googleapis.auth.JWT(
        serviceEmail,
        serviceKeyFile,
        null,
        ["https://www.googleapis.com/auth/calendar"]
    );

authClient.authorize(function (err, tokens) {
    if (err) {
        console.log(err);
    } else {
        googleCal.events.list({
            auth: authClient,
            calendarId: "********@gmail.com",
            fields: {
                items: ["end","start","summary"]
            }
        }, function (err, CL) {
            if (err) {
                console.log(err);
            } else {
                console.log(CL);
            }
        });
    }
})

これは、カレンダー上のさまざまなオブジェクトをすべてリストする JSON オブジェクトを適切に返します。googleCal.events.listただし、呼び出しのすぐ下にイベントを挿入しようとすると:

googleCal.events.insert({
    auth: authClient,
    calendarId: "primary",
    resources: {
        start: {
          dateTime: "2014-07-23T18:25:00.000-07:00",
          timeZone: "America/New_York"
        }, 
        end: {
          dateTime: "2014-07-23T19:25:00.000-07:00",
          timeZone: "America/New_York"
        }, 
        summary: "winning @ life",
        description: "winning @ life description"
    }
}, function (err, something) {
    if (err) {
        console.log(err);
    } else {
        console.log(something);
        // do something else
    }
})

以下400が返されます。

{ errors: 
    [ { domain: 'global',
        reason: 'required',
        message: 'Missing end time.' } ],
  code: 400,
  message: 'Missing end time.'}

これを修正するにはどうすればよいですか?承認は明らかに機能しています。その日の無許可の要求を使い果たしたことと、すべてのイベントを一覧表示できることからわかっています。も指定しましたendTime。Google カレンダー API が、私がしていないことを教えてくれるのはなぜですか?

4

1 に答える 1

5

問題は、2 番目のスニペットの 4 行目のキーワード「resources」にあると思います。ドキュメントに基づいて、それは「リソース」である必要があります。

 * @param  {object} params.resource - Request body data
于 2014-07-23T22:09:02.690 に答える