目前,我有一个工作表绑定脚本,用于读取电子表格数据并根据工作表创建日历事件。该电子表格还存储了其他用户的日历ID(不属于我),我正在尝试读取/写入他们的Google日历。我理想的使用流程是,单个用户可以为所有存储的用户触发脚本,或者每个用户都可以单击脚本并将其事件添加到其指定的日历中,但我发现我甚至无法仅使用其 calendarID 访问其他人的日历。在我在另一个Google帐户上创建测试日历后,我的代码早些时候崩溃了。我将日历切换为公共日历,现在至少按照 getEvents() 文档的指示获得空值。然后,我订阅了该日历,并收到了“例外:不允许操作”。我遇到了OAuth2,觉得这是我需要以某种方式实现的东西,但我不确定如何去做。我是否可以从脚本中对多个用户的日历进行更改,或者我是否需要了解Web应用程序,这是否允许我以某种方式访问其他人的日历?编辑:我不是域名用户,只是使用私人个人谷歌帐户编辑2:还发现附加组件是一回事。去阅读/**Function to add shift details to user's calendar@param{object} user-object with keys of column header's of user-info sheet (name, email, year, calName, calID, early, late)@param{object} eventDetails - an object with keys created after interpreting shift codes (title, start, end, location, desscription, problem, pdate, pvalue)*/function addToCalendar(user, eventDetails){ var calendar = CalendarApp.getCalendarById(user.calID); if(calendar == null){ Logger.log(user.name); //testing code, realized I couldn't accesss other's calIDs here } var existingEvents = calendar.getEvents(eventDetails.start, eventDetails.end); if(existingEvents.length>0){ if(existingEvents[0].getTitle() == eventDetails.title){ Logger.log("ALREADY CREATED!!"); return; } } calendar.createEvent(eventDetails.title, eventDetails.start, eventDetails.end, {description : (eventDetails.description ? eventDetails.description:""), location: (eventDetails.location ? eventDetails.location:"")}); }
1 回答
慕尼黑8549860
TA贡献1818条经验 获得超11个赞
避免将 OAuth 流编码到应用中的一个好方法是将脚本部署为 Web 应用,并使用“应用执行方式为:访问 Web 应用的用户”选项进行部署。
当用户从您的 Web 应用发出请求时,将弹出您的 Web 应用的同意屏幕,并且用户必须给予同意,在此之后,此脚本将以用户身份运行,并可以使用 CalendarApp 将事件添加到其日历中。
添加回答
举报
0/150
提交
取消