使用Google Apps脚本指南中的sheets / forms / forms.gs将来宾姓名添加到日历

时间:2019-06-10 16:53:23

标签: google-apps-script google-calendar-api google-form

我在Google Apps脚本方面的经验非常有限,但是已经成功修改了https://developers.google.com/apps-script/quickstart/forms中的代码,几乎可以满足我的所有需求。

需要知道如何在我的日历上查看所有签署日期的客人。

我已经研究了CalendarApp选项,但是无法格式化任何格式的文件,以使在特定日期填写Google表单的任何人的名字都显示在该日期的日历上-可能是作为来宾或出席者?

  var cal = CalendarApp.getOwnedCalendarById(XXX);
  for (var i = 1; i < values.length; i++) {
    var session = values[i];
    var title = session[0];
    var start = joinDateAndTime_(session[1], session[2]);
    var end = joinDateAndTime_(session[1], session[3]);
    var options = {location: session[4], sendInvites: true};
    var event = cal.createEvent(title, start, end, options)
        .setGuestsCanSeeGuests(false);  
    session[5] = event.getId();

  }
  range.setValues(values);

  var schedule = {};
  for (var i = 1; i < values.length; i++) {
    var session = values[i];
    var day = session[1].toLocaleDateString();
    var time = session[2].toLocaleTimeString();
    if (!schedule[day]) {
      schedule[day] = {};
    }
    if (!schedule[day][time]) {
      schedule[day][time] = [];
    }
    schedule[day][time].push(session[0]);
  }

  // Create the form and add a multiple-choice question for each timeslot.
  var form = FormApp.create('2019-2020 Semester 1 Sign up');
  form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
  form.addTextItem().setTitle('Name').setRequired(true);
  form.addTextItem().setTitle('Email').setRequired(true);
  form.addTextItem().setTitle('Phone Number').setRequired(false);
  for (var day in schedule) {
    var header = form.addSectionHeaderItem().setTitle('Odysseys on ' + day);
    for (var time in schedule[day]) {
      var item = form.addMultipleChoiceItem().setTitle(time + ' ' + day)
          .setChoiceValues(schedule[day][time]);
    }
  }
}

1 个答案:

答案 0 :(得分:0)

我看到您想确保您的活动中添加了合适的客人。阅读评论后,我可以看到Altigraph将您带入了正确的轨道。下面是您需要的语法(我假设“值”是指用户对表单的特定响应):

要在createEvent()选项中添加邀请对象,请执行以下操作:

for (var i = 1; i < values.length; i++) {
    var session = values[i];
    var title = session[0];
    var start = joinDateAndTime_(session[1], session[2]);
    var end = joinDateAndTime_(session[1], session[3]);
    var options = {location: session[4], sendInvites: true, 
        guests: email,
    };
    var event = cal.createEvent(title, start, end, options)
    session[5] = event.getId();
  }

您可以在表单中向用户请求此email,就像您获得他们的姓名或电话一样,如果您直接使用Google表单,则可以选择使用this method来获取用户的电子邮件。

或者,要使用addGuest(),一旦创建了日历(即在此代码段末​​尾具有“事件”对象),您只需使用event.addGuest(email);,其中电子邮件与在另一个选项中。其文档位于this link