![](/img/trans.png)
[英]Google Sheet script - Automatically send an email with values when they are added to a Google Sheet
[英]Send email when one subscription email is added on Google sheet
我有一個代碼,當有人點擊訂閱谷歌表格時,它會從我的網站收集電子郵件。 該過程基於以下步驟: https : //github.com/jamiewilson/form-to-google-sheets/blob/master/README.md但是我還想向訂閱我網站的人發送電子郵件通過谷歌腳本,但我無法這樣做。 這是代碼:
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])
var row = sheet.getLastRow()-1
var column = sheet.getLastColumn()
var dataRange = sheet.getRange(2, 1,row,column)
var data = dataRange.getValues();
var email = data[row-1][1];
MailApp.sendEmail("man@test.com", "Wellcome To Engineers", email);
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()
}
}
如果收集列表中的電子郵件,但不向任何人發送電子郵件
您的腳本有各個部分,但我相信您要問的中心問題是關於獲取doPost()
函數來發送電子郵件,所以這里是我制作的一個快速示例的片段,該示例將在 Apps 腳本中運行。 它不使用任何附加功能,例如鎖定服務,也不使用 try catch 塊,也不返回任何內容,但它會更新電子表格並發送電子郵件。
首先根據您的需要調整它,然后查看有關添加鎖定服務、嘗試和捕獲塊和返回消息的信息。
(如果您在使用這些附加功能時遇到問題,請確保提出有關它們的新問題,而不是嘗試在此線程中獲得答案)
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 -X POST -F 'name={{name}}' -F 'email={{email}}' https://script.google.com/macros/s/{{script id}}/exec
這更新了電子表格並向我在 POST 請求中使用的電子郵件發送了一封電子郵件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.