2016-06-10 91 views
2

似乎已经有similar question了,但我需要一个解决方案(请继续阅读)以当前用户身份进行身份验证。获取所有同事的日历清单

我在尝试制作一个简单的Google Apps脚本应用程序,使用Google日历检查您的同事(在Google Apps for Work域中)是否当前正在开会。

该脚本将作为当前用户执行。为此,我需要能够获取当前用户(不仅是他们订阅的用户)可用的所有日历的列表,这些列表可以在标准日历Web应用的下拉列表中找到:

google calendar look up coworkers' calendars

CalendarApp.getAllCalendars()得到所有日历用户拥有或订阅,这不是我所需要。我希望在我的Google Apps for Work网域(例如与整个公司共享)中向我提供可用的完整列表,即使我没有订阅它们。

CalendarList REST API可用于Apps脚本通过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。 list({domain:“domain.ext”,fields:“users/primaryEmail”}); Logger.log(users); }邮政编码中的“calendar”var是用户的电子邮件地址 – Harold

+0

请参阅我的问题是:“我不希望我的脚本以管理员权限运行,我希望它以当前访问它的用户身份进行身份验证。” –

相关问题