Мне нужно создать событие в календаре моей организации.Это событие является напоминанием о действии, которое все должны предпринять до определенной даты, но эта дата не совпадает каждый месяц, поэтому я не могу выполнить повторяющееся событие.Я не хочу добавлять всех в качестве участников, потому что я хочу, чтобы все держали событие в календаре, а не просто отвечали «не участвовать» и забывали делать то, что им нужно делать в удобное время.
Для этого я уже написал код, который получает каждую активную учетную запись от организации, получает дату начала, дату окончания, название события и описание события из листа Google.Он работает для моего календаря и календарей людей, которые я добавляю вручную в свой список «другие календари» в календаре Google.Но сценарий не создает событие в повестках дня людей в моей организации, которых нет в моем списке «другого календаря».
function getAllPeopleFromDirectory() {
var pageToken;
var page;
var usersId = [];
do {
page = AdminDirectory.Users.list({
domain:'mydomain.com',
orderBy: 'givenName',
maxResults: 400,
query: "orgUnitPath=/ isSuspended=False",
pageToken: pageToken
});
var users = page.users;
if(users) {
for (var i=0; i< users.length; i++) {
var user = users[i];
usersId.push(user.primaryEmail);
}
} else {
Logger.log('No users found.');
}
pageToken = page.nextPageToken;
} while(pageToken);
if (usersId.length != 0){
setUpReminder(usersId);
}
}
function setUpReminder(calendarIDs) {
var ss = SpreadsheetApp.openById("SPREADSHEET_ID");
var sheet = ss.getSheetByName('reminder');
var range = sheet.getDataRange();
var values = range.getValues();
for (var i = 0; i < calendarIDs.length; i++) {
setUpCalendar(values, range, calendarIDs[i]);
}
}
function setUpCalendar(values, range, calendarId) {
var cal = CalendarApp.getCalendarById(calendarId);
for (var i = 1; i < values.length; i++) {
var session = values[i];
var date = new Date(session[1]);
var now = new Date();
if (date.getMonth() == now.getMonth()) {
var title = session[4];
var start = joinDateAndTime(session[1], session[2]);
var end = joinDateAndTime(session[1], session[3]);
var options = {location: session[5], sendInvites: false, description: session[8]};
var event = cal.createEvent(title, start, end, options).setGuestsCanSeeGuests(true);
}
}
range.setValues(values);
}
function joinDateAndTime(date, time) {
date = new Date(date);
date.setHours(time.getHours());
date.setMinutes(time.getMinutes());
return date;
}
Когда я вызываю «CalendarApp.getCalendarById» со всеми, кто не включенв других моих календарях функция возвращает ноль, поэтому cal.createEvent выдает ошибку ...
У кого-нибудь есть идеи, как сделать это правильно?Возможно, я могу добавлять и удалять людей в своем другом календаре каждый раз, когда запускаю скрипт, это не лучшее решение, но если кто-то знает, как это сделать, это было бы круто!