首页 > 解决方案 > Google 日历 ID 授权/配置

问题描述

我有一个每周有几次约会的工作组。我想通过谷歌表格将他们的日程安排在谷歌表格中,而不是自动将预定的约会保存到每个事件的每个所有者。

我编写了自动化代码,创建并同步了计划的表单和工作表,但我在途中遇到了一个障碍:我无权通过应用程序(或者更具体地说,通过日历 ID)在他们的日历上安排事件.

是否有任何配置授权可以让我这样做?

或者,作为一个可选的解决方案,谷歌日历中是否有任何方法可以让我的合作伙伴作为客人参与我自己日历上安排的活动?

现在我正在使用这种方法:

CalendarApp.getCalendarById(calendarID).createEventFromDescription(description);

标签: google-apps-scriptsettings

解决方案


第一个选项

在您的日历上与客人一起创建活动。这将在您的日历中创建一个事件,添加您想要作为客人的电子邮件。

function createEvent() {

  var event = {
  'summary': 'Google I/O 2015',
  'location': '800 Howard St., San Francisco, CA 94103',
  'description': 'A chance to hear more about Google\'s developer products.',
  'start': {
    'dateTime': '2015-05-28T09:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'end': {
    'dateTime': '2015-05-28T17:00:00-07:00',
    'timeZone': 'America/Los_Angeles',
  },
  'recurrence': [
    'RRULE:FREQ=DAILY;COUNT=2'
  ],
  'attendees': [
    {'email': 'lpage@example.com'},
    {'email': 'example@mail.com'}, 
  ],
  'reminders': {
    'useDefault': "False",
    'overrides': [
      {'method': 'email', 'minutes': 24 * 60},
      {'method': 'popup', 'minutes': 10},
    ],
  }
}


Calendar.Events.insert(event, "your calendar id");

}

我从文档中得到了这个例子。

第二种选择

提交表单时获得对用户日历的写入权限。这可以使用带有onSubmit() 触发器的日历 ACL规则并将代码附加到表单来完成:

警告:这将授予对用户日历的所有事件的读写访问权限

function onSubmit(){

  var rule = {
    "role": "writer",
    "scope": {
      "type": "user",
      "value": "your_email"
    }
  }

  Calendar.Acl.insert(rule, "primary"); //"primary" is the id of each user's main calendar

}

用户必须接受这些权限,否则您将无法访问他们的日历。然后你必须像在第一个选项中一样创建事件。

有关 ACL 规则的更多信息,请点击此处,以防它们来自您的域或组


推荐阅读