簡體   English   中英

在 Google 表格中添加一封訂閱電子郵件時發送電子郵件

[英]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 塊,也不返回任何內容,但它會更新電子表格並發送電子郵件。

首先根據您的需要調整它,然后查看有關添加鎖定服務、嘗試和捕獲塊和返回消息的信息。

(如果您在使用這些附加功能時遇到問題,請確保提出有關它們的問題,而不是嘗試在此線程中獲得答案)

在 POST 請求時更新工作表和發送郵件的示例 Web 應用程序。

  1. 我制作了一個只有幾個標題的新電子表格——“姓名”、“時間戳”和“電子郵件”(這不是真實數據)。 “時間戳”需要完全相同(無大寫等)。

樣品表

  1. 我打開腳本編輯器以啟動容器綁定腳本(容器綁定到電子表格)。
  2. 我寫了這段代碼:
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.
}
  1. 從命令行使用 curl 發出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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM