我在 Github 上发现了这个很棒的应用程序脚本,用于写入我的 Google 电子表格。它工作完美。现在我正在寻找一种在脚本运行后向自己发送电子邮件的方法。但事实证明这很困难。我想调用我自己的 EmailNote() 函数。它本身运行得很好,即从编辑器启动时,但是当我尝试将其集成到 doPost(e) 脚本中时,不会发送电子邮件。请寻求帮助!
我的 doPost(e) 脚本:
// Manual: https://github.com/levinunnink/html-form-to-google-sheet
var sheetName = 'Entries' var scriptProp = PropertiesService.getScriptProperties()
function intialSetup () {
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet()
scriptProp.setProperty('key', activeSpreadsheet.getId())
}
function doPost (e) {
var lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
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])
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
}
我的 EmailNote() 脚本:
function EmailNote() {
var emailSender = "[email protected]";
var emailRecipients = ["[email protected]", "[email protected]"];
var emailSubject = "App Script - Email";
var emailBody ='App Script - Email';
// send mail
GmailApp.sendEmail(emailRecipients.join(","), emailSubject, emailBody, {
from: emailSender
});
}
您根本没有在
intialSetup
方法中调用 EmailNote
和 doPost
函数。
const sheetName = 'Entries'
function doPost (e) {
const lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
var doc = SpreadsheetApp.getActiveSpreadsheet()
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])
// Call EmailNote here
EmailNote()
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
}