Добавление имени гостя в календарь с использованием Sheets / forms / forms.gs из руководства по сценариям Google Apps - PullRequest
1 голос
/ 10 июня 2019

У меня очень ограниченный опыт работы со скриптами 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 голосов
/ 18 июня 2019

Я вижу, вы хотите убедиться, что на ваших мероприятиях добавлены нужные гости. После прочтения комментариев я вижу, что 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 напрямую, есть возможность использовать этот метод , чтобы получить адрес электронной почты пользователя.

В качестве альтернативы, чтобы использовать addGuest(), после создания календаря (т. Е. Объекта «событие», который у вас есть в конце этого фрагмента), вы просто используете event.addGuest(email);, где электронная почта такая же, как и в другой опции. , Документация для этого находится в эта ссылка

...