我正在使用谷歌应用程序脚本进行日历事件, 根据文件: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中的所有人共享此日历。
答案 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)