Google apps script 获取所有同事的列表';日历

Google apps script 获取所有同事的列表';日历,google-apps-script,google-calendar-api,Google Apps Script,Google Calendar Api,似乎已经有了一个解决方案,但我需要一个作为当前用户进行身份验证的解决方案(请继续阅读) 我正在尝试制作一个简单的谷歌应用程序脚本应用程序,它使用谷歌日历来检查你的同事(在谷歌应用程序工作域中)是否正在开会 脚本将作为当前用户执行。为此,我需要能够获得当前用户可用的所有日历的列表(不仅仅是他们订阅的日历),与标准日历web应用程序中的下拉列表相同: 获取用户拥有或订阅的所有日历,这不是我需要的。我希望在我的Google Apps for Work domain(例如,与整个公司共享)中提供日历的

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

我正在尝试制作一个简单的谷歌应用程序脚本应用程序,它使用谷歌日历来检查你的同事(在谷歌应用程序工作域中)是否正在开会

脚本将作为当前用户执行。为此,我需要能够获得当前用户可用的所有日历的列表(不仅仅是他们订阅的日历),与标准日历web应用程序中的下拉列表相同:

获取用户拥有或订阅的所有日历,这不是我需要的。我希望在我的Google Apps for Work domain(例如,与整个公司共享)中提供日历的完整列表,即使我没有订阅

可通过应用程序脚本访问的应用程序具有相同的限制

该页面还提到了域范围的授权:

作为应用程序访问域日历

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

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


有办法吗?

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

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

但是,我如何获得所有未订阅日历的列表?
calendar
变量从何而来?@DmitryPashkevich这是不可能的,如果您想获取域中所有日历的列表,可以尝试获取所有用户的列表(作为一个管理函数getUsers(){var users=AdminDirectory.users.list({domain:“domain.ext”,fields:“users/primarymail”});Logger.log(users);}邮政编码中的“calendar”变量是用户的电子邮件地址。请参阅我的问题:“我不希望我的脚本以管理员权限运行,我希望它作为访问它的当前用户进行身份验证。”