Я использую служебную учетную запись для создания новых календарей в нашей системе.
async function newCalendar (email) {
console.log('creating calendar for username', email, 'as', config.google.calendar.clientEmail);
const auth = await getAuth();
const calendar = google.calendar({version: 'v3', auth});
const newCal = await calendar.calendars.insert({
resource: {summary: `SYSCALENDAR(${email})`}});
const calendarId = newCal.data.id;
const associated = await calendar.acl.insert({
calendarId,
requestBody: {
role: 'reader',
scope: {
type: 'user',
value: email
}
},
sendNotifications: false
});
return calendarId;
}
Как показано выше, календари создаются как принадлежащие учетной записи службы, которая выполняет вызов calendars.insert.
Я также внедряю запись calendar.acl, которая, как мне кажется, Предоставляет разрешение пользователю, идентифицированному по электронной почте, на доступ к этому календарю.
В этом фрагменте у меня есть:
sendNotifications: false
Если установить для этого параметра значение true, пользователь получит электронное письмо о новая запись ACL, и можете щелкнуть, чтобы добавить календарь в свой календарьList.
Я не хочу, чтобы пользователь делал это, и вместо этого хотел бы добавить календарь в calendarList в коде, в качестве учетной записи службы.
Это не так просто, как calendarList.insert (calendarId), так как он вставит календарь в учетные записи календаря службы.