获取所有同事的列表'日历

时间:2016-06-10 06:46:39

标签: google-apps-script google-calendar-api

似乎已经有了similar question,但我需要一个解决方案(继续读取)作为当前用户进行身份验证。

我正在尝试创建一个简单的Google Apps脚本应用程序,该应用程序使用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还提到域范围的权限委派

  

将域日历作为应用程序访问

     

应用可以访问域拥有的日历,而无需用户   凭据如果使用服务帐户进行身份验证。服务   帐户必须具有使用域范围权限的必要访问权限   一行。

可能会得到我需要的东西,但我不希望我的脚本以管理员权限运行,我希望它以当前用户访问它来进行身份验证。

有办法吗?

1 个答案:

答案 0 :(得分:0)

您需要订阅您想要查看的日历(并在您看完日历后取消订阅)。这里有一个小小的演示:

var calendar = "name@domain.ext";

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();
  }
}