Использование Google Forms для отправки определенной ссылки на вебинар, когда при регистрации выбрана предпочтительная дата - PullRequest
0 голосов
/ 01 июля 2018

Я новичок в использовании Google Scripts. Моя компания проводит одни и те же онлайн-семинары в течение июля несколько раз. Но так как мы ограничиваем каждую тренировку до 10 участников, мы используем уникальную ссылку перехода к встрече для каждого веб-тренинга, чтобы посетители, выбравшие другую сессию, случайно не попали в другую сессию.

Я собрал этот скрипт на основе инструкций, которые я видел здесь при поиске на форумах переполнения стека.

Примечание: я еще не создал URL вебинара, потому что я пытаюсь выяснить причину ошибок, которые я получаю, поэтому я просто использую текст местозаполнителя, куда будут переходить URL.

function onFormSubmit(event) {
  // Get the responses into convenient variables.
  var name = event.values[3];     // Question 3
  var organization = event.values[2];      // Question 2
  var email = event.values[1];         // Question 1
  var allSessions = event.values[4]   // Question 4, a comma-separated list,
                          .split(','); //  which we turn into an array
  // Loop over all expressed interests, sending webinar links
  for (var session in allSessions) {
    sendWebinarLink( name, email, allSessions[session] );
  }
}

/**
 * Determine the id for a form that matches the given survey (interest),
 * and send an email to the respondent.
 */
function sendWebinarLink( name, email, date ) {
  var webinarURL = null;  // Will fill with appropriate WebinarURL

   // Set webinarURL according to current value of ‘date’.
  switch (date) {
    case "Mon - July 9th 2018 - 10am-11am":
      webinarURL = '1234567890abcdefghijklmnopqrstuvwxyz';  // Replace with real form ID
      break;
    case "Mon - July 9th 2018 - 3pm-4pm":
      webinarURL = '1happyhappyhappyz';  // Replace with real form ID
      break;
    // and so on...
    default:
      // Error handling, or for "other"
      break;
  }

  // Send an email for any interest with a survey form
  if (webinarURL != null) {

  // Build Email Body
    var body = 'Dear '+name+',<br><br>';    // Dear John Doe,
    body += 'Thanks for registering for the Datalink RAE web-based training.<br><br>';
    body += 'You selected the following date and time: ' + date;
    body += ', which you will access via your computer with the following unique address.<br><br>';
    body += 'Please follow <a href="' +webinarURL+ '">this link</a> at the start of you training time.<br><br>';
    body += 'Thank you!';

    MailApp.sendEmail({
     to: email,
     subject: date,
     htmlBody: body
    });
  }
}

Первая ошибка, которую я получаю:

TypeError: Невозможно прочитать "значения" свойств из неопределенного. (строка 3, файл "Код") Уволить

И на данный момент, я не уверен, как это исправить (так как Вопрос 3, где я спрашиваю имя регистранта).

Это Форма Google

Это Google Sheet

Любой совет будет принята с благодарностью!

1 Ответ

0 голосов
/ 02 июля 2018

Нет свойства 'values' в объекте события, который передается в триггер onFormSubmit (). Пожалуйста, обратитесь к официальной документации:

https://developers.google.com/apps-script/guides/triggers/events

Вы можете получить экземпляр класса FormResponse, проверив свойство «response» объекта события:

 var formResponse = e.response;
 var itemResponses = formResponse.getItemResponses();
 for (var i = 0; i < itemResponses.length; i++) {   
   var response = itemResponses[i];
   var questionTitle = response.getItem().getTitle();
   var userInput = response.getResponse();   
 } 

Кроме того, ошибка звучит так, как будто вы пытаетесь выполнить функцию onFormSubmit () непосредственно из редактора, и в этом случае параметр «событие» будет недоступен. Для создания объекта события вы должны инициировать событие = отправить форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...