#google-apps-script #google-calendar-api
#google-apps-script #google-calendar-api
Вопрос:
Я пишу решение для скриптов приложений для запуска один раз в день для чтения всех событий из календаря пользователя, и если пользователь является необязательным участником какого-либо конкретного события, сценарий должен автоматически кодировать событие цветом.
Во время работы с приложением календаря я заметил, что через сценарий приложения отображается только список гостей и их статус (независимо от того, приняли они приглашение или нет), а не «необязательная» или «обязательная» посещаемость. Есть идеи, как это можно сделать?
var myCal = CalendarApp.getEventsForDay(new Date("13-Jan-2021")); **//Get calendar events for 13-Jan-21**
for (var i=0;i<myCal.length;i ) **// Loop through each event**
{
Logger.log("Calendar Invite Name:" myCal[i].getTitle()); **// Get the title for the event**
var guests= myCal[i].getGuestList(); **// Get the guest list**
Logger.log("My Status:" myStatus[2].getStatus()); **//I can only get the guest status here using the getGuestList method and not their importance.**
}
Я проверил документацию приложения календаря, имеющуюся в Google, и с помощью метода getGuestList() возможно только следующее.
Любая помощь по этому вопросу будет оценена.
Ответ №1:
Ответ:
Вы не можете получить optional
свойство an attendee
с помощью службы календаря, однако вы можете получить его с помощью API календаря.
Как это сделать:
- Добавьте
Google Calendar API
службу в свой проект. Откройте проект, щелкните левой кнопкой мышиEditor > Services > Add Service
(нажмите наGoogle Calendar API
. - Используйте метод get события ресурса, чтобы получить фактическое
Event
. Вам нужноcalendarId
то, что может быть'primary'
, если вы используете свой основной календарь, иeventId
то, что вы можете получить его несколькими способами. Следующие предложения предполагают, что в этот день происходит только одно событие.- Используя
Calendar Service
иgetId
:
var ev = CalendarApp.getEventsForDay(new Date("14-Jan-2021"))[0] var event_id = ev.getId().split('@')[0]
- Используя
Calendar API
и список методов
var date_start = new Date("14-Jan-2021").toISOString() var date_end = new Date("15-Jan-2021").toISOString() var calendar_id = 'primary' var optional = { timeMin : date_start, timeMax : date_end } var events = Calendar.Events.list(calendar_id,optional) var event_id = events.items[0].id
- Используя
- После того, как вы получили желаемое
event resource
, вы можете получитьattendees
, и у них есть свойство,optional
которое определяется, только если значение равноTrue
.var event = Calendar.Events.get(calendar_id,event_id) var att = event.attendees for (var i=0; i<att.length; i ){ var a = att[i] var email = a.email var op = a.optional if (op == null){ op = false } console.log('Attendant ' email ' has a optional invitation: ' op) }
Результат
Attendant ignacio@egs-sbt098.eu has a optional invitation: false
Attendant testi@egs-sbt098.eu has a optional invitation: false
Attendant pruebu@egs-sbt098.eu has a optional invitation: true