2016-06-10 7 views
2

Уже есть similar question, но мне нужно решение (чтение), которое аутентифицируется как текущий пользователь.Получить список всех календарей коллег

Я пытаюсь создать простое приложение Google Apps Script, в котором используется Календарь Google, чтобы проверить, находится ли ваш коллега (в домене Google Apps for Work) на собрании.

Сценарий будет выполняться как текущий пользователь. Для этого мне нужно получить список всех календарей, доступных текущему пользователю (а не только те, которые они подписали), тот же список, который доступен в раскрывающемся списке стандартного веб-приложения Календаря:

google calendar look up coworkers' calendars

CalendarApp.getAllCalendars() получает все календари , что пользователь является владельцем или подписчики, который не то, что мне нужно. Я хочу полный список календарейдоступен для моего домена Google Apps for Work (например, для всей компании), даже если я не подписан на них.

CalendarList REST API, доступный для приложений Скрипты через Advanced Calendar Service имеет такое же ограничение.

страница Calendar for Work Features также упоминает делегирования полномочий на уровне домена:

Доступ к календарям домена в качестве приложения

Приложение может получить доступ к домену собственности календарей, не требуя пользовательские учетных данных, если он выполняет проверку подлинности с помощью учетной записи службы. Учетная запись должна иметь необходимый доступ, используя полномочия домена .

, который может получить мне то, что мне нужно, но я не хочу, чтобы мой скрипт работал с правами администратора, я хочу, чтобы он аутентифицировался как текущий пользователь, обращающийся к нему.

Есть ли способ?

ответ

0

вам необходимо подписаться на календарь, который вы хотите просмотреть (и отписаться от него, когда закончите видеть его). Вот небольшая демонстрационная версия:

var calendar = "[email protected]"; 

function getCalInfo(){ 
    var cal = CalendarApp.getCalendarById(calendar); 
    Logger.log(cal); 
    Logger.log(typeof cal); 
    var unsubscribe = false; 
    if(cal==null){ 
    try{ 
     Logger.log("subscribing"); 
     cal = CalendarApp.subscribeToCalendar(calendar); 
     unsubscribe = true; 
    } 
    catch(err){ 
     Logger.log(err); 
    return; 
    } 
    } 
    if(cal){ 
    Logger.log(cal.getTimeZone()); 
    } 
    if(unsubscribe){ 
    Logger.log("unsubscribing"); 
    cal.unsubscribeFromCalendar(); 
    } 
} 
+0

Но как мне получить список всех календарей, на которых я не подписан? Откуда появляется переменная 'calendar' в вашем фрагменте? –

+0

@DmitryPashkevich это невозможно, если вы хотите получить список всего календаря в домене, вы можете попытаться получить список всех ваших пользователей (в качестве функции администратора getUsers() { var users = AdminDirectory.Users. список ({domain: "domain.ext", поля: "users/primaryEmail"}); Logger.log (users); } «calendar» var в почтовом коде является адресом электронной почты пользователя. – Harold

+0

See мой вопрос: «Я не хочу, чтобы мой скрипт запускался с правами администратора, я хочу, чтобы он аутентифицировался, как текущий пользователь, который обращается к нему». –

Смежные вопросы