1 回答
TA贡献1824条经验 获得超6个赞
介绍
您的脚本有多个部分,但我相信您要问的中心问题是关于获取doPost()
发送电子邮件的功能,所以这里是我制作的一个可以在 Apps 脚本中使用的快速示例的片段。它不使用任何额外功能,例如 Lock Service 或 try catch 块,它不返回任何内容,但它会更新电子表格并发送电子邮件。
首先根据您的需要进行调整,然后了解如何添加 Lock Service、Try and Catch 块和 Return 消息。
(如果您在使用这些附加功能时遇到问题,请确保提出有关它们的新问题,而不是试图在此线程中获得答案)
在 POST 请求时更新工作表和发送邮件的示例 Web 应用程序。
我制作了一个只有几个标题的新电子表格——“姓名”、“时间戳”和“电子邮件”(这不是真实数据)。“时间戳”需要写得完全一样(没有大写等)。
我打开脚本编辑器以启动容器绑定脚本(容器绑定到电子表格)。
我写了这段代码:
function doPost (e) {
var doc = SpreadsheetApp.getActiveSpreadsheet() // works if container bound
var sheet = doc.getSheetByName("Sheet1")
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]
})
var newRange = sheet.getRange(nextRow, 1, 1, newRow.length)
newRange.setValues([newRow])
MailApp.sendEmail(e.parameter["email"], "Wellcome To Engineers", "Welcome"); // you seemed to have the order of the parameters wrong.
}
POST从命令行用 curl发出请求来测试它:
curl -X POST -F 'name={{name}}' -F 'email={{email}}' https://script.google.com/macros/s/{{script id}}/exec
这更新了电子表格并向我在 POST 请求中使用的电子邮件发送了一封电子邮件。
添加回答
举报