2

カレンダー イベントのゲストのリストを取得し、各ゲストのステータス (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());      
}        
}  
}
4

1 に答える 1

1

グループ メンバーのステータスにドリルインするためのアプリ スクリプト API サポートがないため、これは現在 DomainGroups では不可能です。ドキュメントによると、グループ メンバーを表示するための適切な権限があると仮定すると、これらのユーザーとそのステータスをカレンダー UI から表示できるはずです。

Enterprise Calendar FAQから:

社内ディレクトリからメーリング リストを会議に招待できますか?

はい、社内ディレクトリにあるメーリング リスト (グループ) をミーティングに招待できます。グループの各メンバーは、招待メールを受け取ります。ただし、招待メールにはグループのすべてのメンバーが表示されるわけではないことに注意してください。また、グループのメンバー リストを表示する権限がある場合にのみ、各出席者のカレンダーの招待状にグループ メンバーが表示されます。

ドメイン管理者は、GroupsManagerサービスを使用してグループのメンバーリストを取得できます。残念ながら、カレンダー イベントのコンテキスト内では、それができる唯一の有用なことです。個々のユーザーの招待ステータスを取得することはできません。メンバー リストを取得するようにスクリプトを変更しました。

function testCalendarEvents(){
  var calendarName="david_bingham@mitel.com";
  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());
        }
      }
    }        
  }  
}
于 2013-04-01T20:34:22.877 に答える