サービス アカウントを使用して 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 が、私がしていないことを教えてくれるのはなぜですか?