Получить имя пользователя при отправке формы, когда форма встроена

Я модифицировал скрипт учебного пособия службы поддержки, найденный здесь:

https://developers.google.com/apps-script/articles/helpdesk_tutorial

Поскольку это только для внутреннего использования, я удалил поле "Контактный адрес электронной почты" и установил в журнале формы имя пользователя для электронной таблицы. Я отредактировал функцию formSubmitReply для компенсации:

Оригинал:

function formSubmitReply(e) {
var userEmail = e.values[3];
MailApp.sendEmail(userEmail,
    "Help Desk Ticket",
    "Thanks for submitting your issue. \n\nWe'll start " +
    "working on it as soon as possible. \n\nHelp Desk",
    {name:"Help Desk"});
}​

Изменен:

function formSubmitReply(e) {
var userEmail = e.user;
MailApp.sendEmail(userEmail,
    "Help Desk Ticket",
    "Thanks for submitting your issue. \n\nWe'll start " +
    "working on it as soon as possible. \n\nHelp Desk",
    {name:"Help Desk"});
}​

Как видите, все, что я сделал, это изменил способ определения переменной userEmail. Когда я просматриваю Live-форму и отправляю тикет, это похоже на работу.

Однако после того, как я встроил форму во внутренний сайт Google (наш "интранет"), он больше не работает.

Есть ли способ, которым мне нужно определить userEmail для работы, когда форма встроена?

Я также попробовал это:

var userEmail = sheet.getRange(lastRow, getColIndexByName("Username")).getValue();

Но не повезло. Любая помощь будет оценена! Я, очевидно, новичок в этом и просто пытаюсь взломать несколько вещей, чтобы заставить его работать должным образом.

ура

1 ответ

Решение

Событие, очевидно, строится по-разному для встроенной формы.

Пытаться:

var userEmail = Session.getEffectiveUser().getEmail();

Это будет независимо от события и должно идентифицировать пользователя, выполняющего скрипт.

Другие вопросы по тегам