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 請求中使用的電子郵件發送了一封電子郵件。
添加回答
舉報