如果设置公开并且组织中可以访问所有ID,则getCalendarById(id)如何工作

时间:2014-10-30 05:02:15

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

我正在使用谷歌应用程序脚本进行日历事件, 根据文件:https://developers.google.com/apps-script/reference/calendar/calendar-app#getCalendarById%28String%29

返回值是具有给定ID的日历,如果日历不存在或用户无法访问,则返回null 在orgainzation windows.com中说,设置是在组织中的所有ID都可访问的情况下进行的,

var cal = CalendarApp.getCalendarById('mac@windows.com');
   Logger.log(cal);

如果我运行该函数并且当我手动将mac@windows.com订阅到授权脚本运行程序的日历时,它会给null,那么它可以正常工作,

有没有办法让我们在运行脚本时获取组织的id,以动态输入id。

org google商业应用中的日历设置为:默认情况下,与组织windows.com中的所有人共享此日历。

1 个答案:

答案 0 :(得分:1)

我在最近的一个项目中遇到了同样的问题,发现用户必须明确订阅GetCalendarById函数的日历才能可靠地工作。我使用以下代码来处理这个问题,如果getCalendarById在第一次尝试时无法返回它,它会尝试订阅用户。

我还将日历设置为隐藏&未选中,因此订阅用户不会使他们的标准日历视图混乱。

  var calendar = CalendarApp.getCalendarById(calendar_id);
  if(calendar == null){
    //user may not have access, auto-subscribe them.
    calendar = CalendarApp.subscribeToCalendar(calendar_id,{hidden:true,selected:false});
  }

请参阅calendarApp参考https://developers.google.com/apps-script/reference/calendar/calendar-app#subscribeToCalendar(String,Object)