似乎已经有了similar question,但我需要一个解决方案(继续读取)作为当前用户进行身份验证。
我正在尝试创建一个简单的Google Apps脚本应用程序,该应用程序使用Google日历来检查您的同事(在Google Apps for Work域中)当前是否正在参加会议。
脚本将作为当前用户执行。为此,我需要能够获取当前用户可用的所有日历的列表(不仅仅是他们已订阅的日历),列表中可用的列表相同标准日历网络应用程序中的下拉列表:
CalendarApp.getAllCalendars()获取用户拥有或订阅的所有日历 ,这不是我需要的。我希望在我的Google Apps for Work域中完整的日历列表 可用(例如与整个公司共享),即使我没有订阅他们。
通过CalendarList REST API提供给应用脚本的Advanced Calendar Service具有相同的限制。
页面Calendar for Work Features还提到域范围的权限委派:
将域日历作为应用程序访问
应用可以访问域拥有的日历,而无需用户 凭据如果使用服务帐户进行身份验证。服务 帐户必须具有使用域范围权限的必要访问权限 一行。
可能会得到我需要的东西,但我不希望我的脚本以管理员权限运行,我希望它以当前用户访问它来进行身份验证。
有办法吗?
答案 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();
}
}