2013-03-29 1 views
1

캘린더 일정에 대한 손님 목록을 가져 와서 각 손님 상태 (YES, NO, MAYBE)를 파악하려고했지만 사용자 그룹에 문제가 발생했습니다. . 그룹 이름과 INVITED 상태를 알려주지 만 사용자 그룹의 각 게스트와 초대 상태가 필요합니다. 이것이 가능한가?손님으로 상태를 얻는 사용자 그룹이있는 이벤트 손님 목록

var calendarName="calendar name"; 
var calDate=new Date("04/02/2013"); 

function testCalendarEvents(){ 
var calendars = CalendarApp.getCalendarsByName(calendarName); 
var events = calendars[0].getEventsForDay(calDate); 

for(var c=0; c<events.length; c++){ 
Logger.log("Event "+c+": "+events[c].getTitle()); 

var guestList=events[c].getGuestList();  
for(var d=0; guestList!=null && d<guestList.length; d++){ 
    Logger.log("Guest "+d+": "+guestList[d].getEmail()+", Status: "+guestList[d].getGuestStatus());  
}   
} 
} 
+0

저에게 잘 작동하는 것 같습니다. 코드에 각 게스트의 상태가 표시됩니다. 실제로 Gcal UI를 통해 주소록 그룹을 추가하고 있습니까? –

+0

@ BryanP의 의견을 확대하면 GCal UI를 통해 추가 할 때 Gmail에서 만든 그룹이 모든 회원에게 확장됩니다. 그럼, "사용자 그룹"이 무엇인지 설명해 주시겠습니까? – Mogsdad

+0

@BryanP에 대한 응답 주셔서 감사합니다. 사용자 그룹을 명확히해야했습니다. 이 예에서 사용자 그룹은 내가 만든 그룹이 아닌 도메인 사용자 그룹입니다. 해당 사용자 그룹에 액세스하려면 관리자 권한이 필요합니까 (지금은 필요하지 않습니다) 또는 다른 방법이 있습니까? –

답변

1

그룹 구성원 상태로 드릴링하기위한 apps-script API 지원이 없으므로 DomainGroups에는 현재이 기능을 사용할 수 없습니다. 설명서에 따르면 그룹 구성원을 볼 수있는 적절한 권한이 있다고 가정하면 Calendar UI를 통해 해당 사용자와 해당 상태를 볼 수 있습니다. Enterprise Calendar FAQ에서

는 :

나는 회의에 우리의 회사 디렉터리에서 메일 링리스트를 초대 할 수 있나요?

예, 디렉토리의 모든 메일 링리스트 (그룹)를 회의에 초대 할 수 있습니다. 그룹의 각 회원은 초대장을 이메일로 받게됩니다. 단, 이메일 초대장에 그룹 구성원 인 명이 모두 표시되지는 않습니다. 또한 그룹 회원은 그룹의 회원 목록을 볼 수있는 권한이있는 경우에만 각 참석자의 캘린더에 대한 초대장에 표시됩니다.

도메인 관리자 인 경우 GroupsManager 서비스를 사용하여 그룹의 구성원 목록을 검색 할 수 있습니다. 불행히도 캘린더 일정의 맥락에서 할 수있는 유일한 유용한 방법입니다. 개별 사용자의 초대 상태를 가져올 수 없습니다. 회원 목록을 검색하도록 스크립트를 수정했습니다 :

function testCalendarEvents(){ 
    var calendarName="[email protected]"; 
    var calDate=new Date("04/01/2013"); 
    var calendars = CalendarApp.getCalendarsByName(calendarName); 
    var events = calendars[0].getEventsForDay(calDate); 

    try { 
    var domainAdmin = false;   // assume we aren't an admin in a domain 
    GroupsManager.getGroup("test"); 
    domainAdmin = true;    // we passed the test, so we ARE 
    } 
    catch (error) { 
    // We didn't pass the test... why not? 
    // Get "Service error: : Invalid request URI" if outside of an enterprise account 
    // Get "You do not have permission to perform that action." if not admin. 
    Logger.log("Not Domain Admin: "+error.message); 
    } 

    for(var c=0; c<events.length; c++){ 
    Logger.log("Event "+c+": "+events[c].getTitle()); 

    var guestList=events[c].getGuestList();  
    for(var d=0; guestList!=null && d<guestList.length; d++){ 
     if (!domainAdmin) { 
     Logger.log("Guest "+d+": "+guestList[d].getEmail()+", Status: "+guestList[d].getGuestStatus()); 
     } 
     else { 
     // Check if this guest is a group 
     var group = GroupsManager.getGroup(guestList[d].getEmail()); 
     if (group) { 
      // getAllMembers() returns an array of email addresses 
      var groupMembers = group.getAllMembers(); 
      for (var e in groupMembers) { 
      Logger.log("Guest "+d+"/"+e+": "+groupMembers[e]+ 
         ", Status: "+"UNKNOWN(group "+guestList[d].getEmail()+")"); 
      } 
     } 
     else { 
      Logger.log("Guest "+d+": "+guestList[d].getEmail()+", Status: "+guestList[d].getGuestStatus()); 
     } 
     } 
    }   
    } 
}