#javascript #forms #google-sheets #google-forms
#javascript #формы #google-sheets #google-forms
Вопрос:
Я действительно новичок в Google scripts, и мне нужна ваша помощь.
У меня есть форма, в которой среди имеющихся в ней полей есть одно поле с именем owner, это просто имя.
Мне нужно создать скрипт для отправки уведомления лицу, указанному в поле владелец, при отправке формы.
Я знаю, как записать электронное письмо непосредственно в скрипт
function myFunction() {
// Fetch the email address
var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Test").getRange("B2");
var emailAddress = emailRange.getValues();
// Send Alert Email.
var message = 'This is your Alert email!'; // Second column
var subject = 'Your Google Spreadsheet Alert';
MailApp.sendEmail(emailAddress, subject, message);
}
Проблема, с которой я запутался, заключается в том, что я знаю, как распознать электронное письмо в зависимости от имени владельца, которое хранится на другом листе.
Вот ссылка на образец формы и вот пример электронной таблицы
Кто-нибудь может поделиться информацией?
Ответ №1:
Есть четыре вещи, которые вам нужно понять и исследовать.
1 — Создайте скрипт, который может быть создан как устанавливаемый триггер «onFormSubmit». Документация находится здесь.. Это будет выполняться каждый раз при отправке формы. Это легко сделать, и я добавил скриншот экрана добавления триггера в конце этого ответа.
2 . Узнайте об информации, собранной скриптом «onFormSubmit». В частности, он вернет диапазон отправки формы, из которого вы хотите получить значение столбца 7 (владелец).
3 — Таблица электронных писем содержит отдельный набор данных. Вы можете получить это, сославшись на это с помощью getSheetByName
— documentation Ref
4 — Вам нужно найти соответствие между значениями «Владелец» и «Имя» на листе «Электронные письма». Существует множество вариантов того, как найти совпадение с владельцем, но перебирать данные «электронных писем», вероятно, проще всего. В каждой новой строке вы проверяете, совпадает ли имя электронной почты с «Владельцем». Когда вы найдете совпадение, вы получите сопроводительный адрес электронной почты (в ячейке рядом с именем электронной почты). Затем вы можете отправить электронное письмо, как вы тестировали.
Этот код адаптирует ваш существующий код для выполнения упомянутых шагов.
function so5524531901(e) {
// this script as an Installable "OnFormSubmit" Trigger
//setup the spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
//get the range from OnFormSubmit
var range = e.range;
//Logger.log("DEBUG: the range is " range.getA1Notation());//DEBUG
// get the data for the range
var response = range.getValues();
// get the owner name from the form submission
var owner = response[0][7];
Logger.log("DEBUG: Owner = " owner);// DEBUG
// get the emails list
var emailSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails");
// get ALL the data from this sheet
var emaildata = emailSheet.getDataRange().getValues();
// check how many rows of data
var emailLastRow = emailSheet.getLastRow();
// start the loop through the emails data
for (var i=1; i<emailLastRow; i ){
// if owner is equal to Email Name
if (owner == emaildata[i][0]){
// there is a match
//get the email address
var emailAddress = emaildata[i][1];
Logger.log("DEBUG: owner = " emaildata[i][0] ", email address: " emailAddress);// DEBUG
// Send Alert Email.
// Uncomment the following rows to declare the message, subject and then send the email.
// var message = 'This is your Alert email!'; // Second column
//var subject = 'Your Google Spreadsheet Alert';
//MailApp.sendEmail(emailAddress, subject, message);
}
}
}