亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

慕神8447489 2023-03-18 16:14:45
當有人點擊訂閱谷歌表格時,我有一個代碼可以從我的網站收集電子郵件。該過程基于此處的這些步驟: 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("[email protected]", "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()  }}如果收集列表中的電子郵件但不向任何人發送電子郵件
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

介紹

您的腳本有多個部分,但我相信您要問的中心問題是關于獲取doPost()發送電子郵件的功能,所以這里是我制作的一個可以在 Apps 腳本中使用的快速示例的片段。它不使用任何額外功能,例如 Lock Service 或 try catch 塊,它不返回任何內容,但它會更新電子表格并發送電子郵件。

首先根據您的需要進行調整,然后了解如何添加 Lock Service、Try and Catch 塊和 Return 消息。

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

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

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

http://img1.sycdn.imooc.com//6415731a0001c0b004060184.jpg

我打開腳本編輯器以啟動容器綁定腳本(容器綁定到電子表格)。

我寫了這段代碼:

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


查看完整回答
反對 回復 2023-03-18
  • 1 回答
  • 0 關注
  • 629 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號