Я вижу все сообщения, которые были сгенерированы скриптом Google Apps в папке "Gmail", но я не получил их в другом тестовом аккаунте. Но если я создаю сообщение вручную - я получаю его (в тестовом аккаунте).
Не могли бы вы дать мне какие-либо идеи, что не так? Похоже, что скрипт работает правильно.
Триггер документа: событие: « из таблицы - при отправке формы »
Обновление на следующий день:
Теперь я вижу, что это еще не вопрос о ГАЗЕ (мой код работает), но теперь мой вопрос уже о некоторых настройках где-то ...
Я видел, когда я отключил опцию " Ограничить пользователей в и доверенных доменах " (https://support.google.com/a/answer/6160020) в настройках формы Google - я начал получать уведомления, генерируемые скриптом ...
Знаете ли вы, как сохранить это ограничение и заставить работать триггер FormSubmit? Спасибо!
Большой Редактировать:
Извините, я виноват в предоставлении исходного кода. Функция sendNotification (data) вызывается не напрямую как обработчик события onFormSubmit, а изнутри onFormSubmit (event) функция, которую я использую как обработчик события onFormSubmit. В этом случае функция sendNotification (data) получила мой собственный подготовленный объект данных, а не объект события, который получил функцию обработчика события.
//onFormSubmit Event Handler:
function onFormSubmit(event) {
...
sendNotification(data)
}
/**
* Sending a HTML Notification Message to all recipients in the Email List
*/
function sendNotification(data) {
try {
Logger.log("-------------------------------- in sendNotification")
var template = HtmlService.createTemplateFromFile('NotificationEmail');
template.data = data;
var htmlOutput = template.evaluate();
var htmlMessage = htmlOutput.getContent()
var notifySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Notifications");
var notifyRange = notifySheet.getDataRange();
var addresses = notifyRange.getValues();
addresses.shift(); //skip Headers (first row)
Logger.log("addresses: " + addresses);
//Loop through all Addresses:
for (i in addresses) {
var row = addresses[i];
var address = row[0]; //1st column <-----
if(address) {
Logger.log("address: " + address);
//MailApp.sendEmail(emailAddress, subject, message);
MailApp.sendEmail({
name: "notification",
to: address,
subject: data.emailTitle,
htmlBody: htmlMessage,
//noReply: true,
inlineImages: {
logoImage: data.logoImage
}
});
}
}
Logger.log("-------------------------------- end of sendNotification")
} catch (err) {
Logger.log(err.toString());
}
}
Обновление (добавлен снимок экрана с разрешениями сценария в центре разработчика Suite https://script.google.com):
Обновление 2
(Отредактировано) Исходный код исходного сообщения:
Delivered-To: admin@g<company_name>.com
Received: by ..... with SMTP id .....;
Tue, 2 Apr 2019 07:20:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;.....
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;........
X-Google-Smtp-Source: ........
MIME-Version: 1.0
X-Received: by ...... with SMTP id ......; Tue, 02 Apr 2019 07:20:12 -0700 (PDT)
Message-ID: <000000000000.......@google.com>
Date: Tue, 02 Apr 2019 14:20:12 +0000
Subject: ......
From: ...... admin@g<company_name>.com
To: ....@gmail.com
Content-Type: multipart/related;
Обновление 3
function onFormSubmit(event) {
try {
Logger.log("onFormSubmit trigger runs-------------------------------------")
//PREVENT AN ERROR: Service invoked too many times in a short time: exec qps. Try Utilities.sleep(1000) between calls.
Utilities.sleep(300);
var submitterEmail = Session.getEffectiveUser().getEmail();
var submitRow = event.range.rowStart;
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getSheetByName("Form Responses 1");
...
//exec Log:
var execLog = spreadsheet.getSheetByName("ExecLog");
var execLastRow = execLog.getLastRow();
//setCellValue(sheet, row, col, newValue)
setCellValue(execLog, execLastRow+1, 1, JSON.stringify(event));
....
var data = { ... }
//Sending HTML Messages:
sendSubmitterConfirmation(data); //Submitter's confirmation
sendNotification(data); //Notifications
sendRequestToApprove(data); //Requests to approve
} catch (err) {
Logger.log(err.toString());
}
}
Лист «ExecLog» содержит исходный код объекта события:
{
"authMode": {},
"values": [
"4/2/2019 14:00:24",
"admin@<COMPANY_NAME>.com",
"test",
"test",
"test",
"01-01-01",
"test@test.com"
],
"namedValues": {
QUESTIONS.....
},
"range": {
"columnStart": 1,
"rowStart": 2,
"rowEnd": 2,
"columnEnd": 10
},
"source": {},
"triggerUid": "XXXXX"
}