gpt4 book ai didi

google-apps-script - 获取所有同事日历的列表

转载 作者:行者123 更新时间:2023-12-05 07:49:11 25 4
gpt4 key购买 nike

似乎有一个 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 可用于 Apps 脚本具有相同的局限性。

页面Calendar for Work Features还提到全域授权:

Accessing domain calendars as an app

An app can access domain-owned calendars without requiring user credentials if it authenticates using a service account. The service account must have the necessary access using domain-wide authority delegation.

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

有办法吗?

最佳答案

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

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

关于google-apps-script - 获取所有同事日历的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37741631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com