Первое, что нужно сделать, это создать формы и отправить электронные письма. Для этого я написал функцию, которая перебирает все строки на вашем листе (называется «Sheet1», изменяет ее в соответствии с вашими предпочтениями), создает форму для каждой строки и отправляет ее на электронные письма, найденные в столбце A (влист, над которым я работаю, данные начинаются со строки 2 и столбцы: A - электронная почта / B - тема / C - время):
function sendMails() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var values = ss.getSheetByName("Sheet1").getDataRange().getValues();
for(var i = 1; i < values.length; i++) {
var email = values[i][0];
var topic = values[i][1]
var formName = email + " - " + topic;
var form = FormApp.create(formName);
var url = form.getPublishedUrl();
form.setTitle(formName);
form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId()); // This line bounds the created form to your spreadsheet so that responses will be written in here, in an automatically created sheet
// You can set another destination spreadsheet if you don't want all these sheets created in your spreadsheet
var question = form.addDateTimeItem();
question.setTitle("Please provide a preferred time for your assigned lecture on " + topic);
var userEmail = form.addCheckboxItem();
userEmail.setChoices([userEmail.createChoice(email)]);
var topicName = form.addCheckboxItem();
topicName.setChoices([topicName.createChoice(topic)]);
var checkBoxValidation = FormApp.createCheckboxValidation()
.requireSelectExactly(1)
.build();
userEmail.setValidation(checkBoxValidation);
topicName.setValidation(checkBoxValidation);
MailApp.sendEmail(email, topic, url);
}
}
Далее необходимо установить onFormSubmitвызвать в вашей таблице. Вы можете сделать это, чтобы запустить функцию, которая будет записывать предпочтительное ВРЕМЯ, выбранное пользователем в форме при каждой отправке формы. Чтобы создать триггер, запустите эту функцию в своем скрипте только один раз:
function createOnFormSubmitTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('writeTime')
.forSpreadsheet(ss)
.onFormSubmit()
.create();
}
Наконец, ниже приведена функция, которая запускает триггер при отправке формы. Он ищет строку, в которой тема и электронное письмо совпадают с теми, которые приходят из формы, и устанавливает время:
function writeTime(e) {
var response = e.values;
var time = response[1];
var email = response[2];
var topic = response[3];
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var values = sheet.getDataRange().getValues();
for(var i = 1; i < values.length; i++) {
if(values[i][0] == email && values[i][1] == topic) {
sheet.getRange(i + 1, 3).setValue(time);
}
}
}
Надеюсь, это полезно для вас.