如何使用 google 应用程序脚本从用户的电子邮件中获取日历 ID?
How to get Calendar Id from user's email using google apps script?
我正在尝试为在 google 表单上提交休假请求的用户创建一个 Google 日历事件。当此表单响应记录在 google 表中时,我得到了用户电子邮件 ID 并想为他们创建一个日历事件。当我使用我的电子邮件 ID 时,脚本会创建事件,但当我尝试为其他用户执行相同操作时,它会返回 null。
示例代码如下:
CalendarApp.getCalendarById(email)
.createAllDayEvent(
'OOO - Out Of Office',
startDate,
endDate,
{
description: message,
sendInvites: true,
});
我收到此错误:无法读取 属性 null
的“createAllDayEvent”
我 googled 这个错误,someone 建议订阅用户的日历可以解决这个问题。我使用以下代码段来反驳:
var calendar = CalendarApp.getCalendarById(email);
if(calendar == null){
//user may not have access, auto-subscribe them.
calendar = CalendarApp.subscribeToCalendar(email,{hidden:true,selected:false});
}
但它显示了一个新的错误说明:日历或日历事件不存在、已被删除或用户无权访问它
知道我们如何让它发挥作用。谢谢。
您不能在 Form Response 上执行此操作(至少不可靠)。
要在其他用户的日历中创建活动,他们必须更改日历设置以供 public 使用,并且访问权限必须设置为 'Make changes to events'。有关此的更多信息,请参阅 this help page
如果这些设置不是由用户设置的,您就无法为它们创建事件。在这种情况下,您有两个选择:
- 创建一个 OAuth2 应用程序,用户对其进行身份验证以允许代表他们创建日历事件(尽管这仍然不能在表单提交时完成)
- 在您的 日历上创建活动并使用他们的电子邮件地址向他们发送邀请。您可以授予他们对活动的编辑权限,以便他们可以像在他们的日历中一样控制它,但在这种情况下,他们必须接受活动邀请。
我正在尝试为在 google 表单上提交休假请求的用户创建一个 Google 日历事件。当此表单响应记录在 google 表中时,我得到了用户电子邮件 ID 并想为他们创建一个日历事件。当我使用我的电子邮件 ID 时,脚本会创建事件,但当我尝试为其他用户执行相同操作时,它会返回 null。
示例代码如下:
CalendarApp.getCalendarById(email)
.createAllDayEvent(
'OOO - Out Of Office',
startDate,
endDate,
{
description: message,
sendInvites: true,
});
我收到此错误:无法读取 属性 null
的“createAllDayEvent”我 googled 这个错误,someone 建议订阅用户的日历可以解决这个问题。我使用以下代码段来反驳:
var calendar = CalendarApp.getCalendarById(email);
if(calendar == null){
//user may not have access, auto-subscribe them.
calendar = CalendarApp.subscribeToCalendar(email,{hidden:true,selected:false});
}
但它显示了一个新的错误说明:日历或日历事件不存在、已被删除或用户无权访问它
知道我们如何让它发挥作用。谢谢。
您不能在 Form Response 上执行此操作(至少不可靠)。
要在其他用户的日历中创建活动,他们必须更改日历设置以供 public 使用,并且访问权限必须设置为 'Make changes to events'。有关此的更多信息,请参阅 this help page
如果这些设置不是由用户设置的,您就无法为它们创建事件。在这种情况下,您有两个选择:
- 创建一个 OAuth2 应用程序,用户对其进行身份验证以允许代表他们创建日历事件(尽管这仍然不能在表单提交时完成)
- 在您的 日历上创建活动并使用他们的电子邮件地址向他们发送邀请。您可以授予他们对活动的编辑权限,以便他们可以像在他们的日历中一样控制它,但在这种情况下,他们必须接受活动邀请。