Использование Google Forms для отправки определенной ссылки на вебинар, когда при регистрации выбрана предпочтительная дата
Я новичок в использовании 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: Невозможно прочитать свойство "values" из неопределенного. (строка 3, файл "Код") Увольнение
И на данный момент, я не уверен, как это исправить (так как Вопрос 3, где я спрашиваю имя регистранта).
Это форма Google
Это Google Sheet
Любой совет будет принята с благодарностью!
1 ответ
В объекте события отсутствует свойство '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() непосредственно из редактора, и в этом случае параметр "событие" будет недоступен. Для создания объекта события вы должны инициировать событие = отправить форму.