Я создал форму html, чтобы пользователи могли отправлять свои электронные письма на вкладку электронной почты "Emails"
В электронной таблице я создал еще одну вкладку "Sort Emails", чтобы отсортировать результаты вкладки "Emails" в обратный порядок, поэтому, пока люди отправляют свои электронные письма, у меня есть новое отправленное электронное письмо в Sort Emails B2.
Проблема заключается в следующем: теперь я пытаюсь автоматически отправить электронное письмо на новое отправленное электронное письмо при отправке, т.е. один раз новый пользователь отправляет форму, скрипт отправляет электронное письмо на адрес электронной почты пользователя, который должен находиться в Sort Emails B2. Любая помощь, пожалуйста. Заранее спасибо!
Обратите внимание, что когда я запускаю функцию SendEmail вручную из редактора скриптов листа, она работает, но мой вопрос касается автоматического запуска функции при отправке формы
Я не очень опытный, но я думаю, что нам нужен триггер для автоматического запуска функции SendEmail всякий раз, когда на лист добавляется новая строка, и, конечно, я пробовал триггеры текущего проекта в редакторе сценариев (оба onEdit и onChange) но не повезло (я не понимаю почему ??)
Это мой html файл:
<!DOCTYPE html>
<html lang="en">
<body>
<form name="Subscribe" id="Subscribe" action="https://script.google.com/macros/s/ScriptKey/exec" method="POST" onsubmit="myFunction()">
Form Inputs ..
</form>
<script>
function myFunction() {
google.script.run.SendEmail();
}
</script>
</body>
</html>
И это мой файл GS:
function doGet() {
return HtmlService.createTemplateFromFile('Form.html')
.evaluate() // evaluate MUST come before setting the Sandbox mode
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}
var sheetName = 'Emails'
var scriptProp = PropertiesService.getScriptProperties()
function doPost (e) {
var lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
var doc = SpreadsheetApp.getActive();
var sheet = doc.getSheetByName(sheetName)
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
var nextRow = sheet.getLastRow() + 1
var newRow = headers.map(function(header) {
return header === 'Timestamp' ? new Date() : e.parameter[header]
})
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])
var y = sheet.getLastRow();
var x = sheet.getRange(y,2).getValues();
return ContentService
.createTextOutput(JSON.stringify({ 'Central Says': 'Successfully subscribed', 'Email': x }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
}
function SendEmail() {
var e = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sort Emails").getRange("B2").getValues();
var m = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Template").getRange("A1").getValues();
var subject = 'Welcome ..';
MailApp.sendEmail(e, subject, m);
}