google表单数据在重新编辑并重新提交表单时,在链接的电子表格中未在触发脚本中拾取的数据

问题描述 投票:0回答:1

尽管已正确更新了链接的SPEADSHEET,并且重新提交表单中的值被标记为更改,这些值似乎并未由

收集。
var formValues = e.namedValues;
var firstName = formValues['First Name'][0];
var lastName = formValues['Last Name'][0];
var emailAddr = formValues['Email Address'][0];
var eventRow = e.range.getRow();

当脚本试图发送和发送电子邮件发送消息例外时,该脚本失败了:无法发送电子邮件:sendemail上没有收件人(代码:101:15)。...执行的脚本被称为发送电子邮件 Maybe当您重新提交一个表单时,仅在EnamedValues中拾取了更改的值?

使用e.range.getValues()

建议的stackoverflow上的其他答案

我尝试了如下

function sendEmail(e) { // Get Relevant Data from Form Submission var responseArr = e.range.getValues(); var eventRow = e.range.getRow(); Logger.log('Event Row', responseArr); var responseSheet = e.source.getSheetByName('Form Responses 1'); const lastResponseCol = responseSheet.getLastColumn(); var headerArr = responseSheet.getSheetValues(1,1,1,lastResponseCol); Logger.log('Header Row', headerArr); var firstName = responseArr[headerArr.indexOf('First Name')]; var lastName = responseArr[headerArr.indexOf('Last Name')]; var memType = responseArr[headerArr.indexOf('Membership Type')]; var maaaNum = responseArr[headerArr.indexOf('MAAA Number')]; var emailAddr = responseArr[headerArr.indexOf('Email Address')]; }

log既显示了响应网和headerarr as empty。 我学到的一个东西是logger.log值仅在您实时关闭“显示”
时显示

任何帮助

您有一个Google表格,其中包含标题为“名字”,“姓氏”,“会员类型”,“ MAAA号码”和“电子邮件地址”的问题 您正在使用

namedvalues

为电子邮件创建值,但是其中的某些或全部作为“编辑”提交的空白。

原因是双重的:
google-apps-script google-forms
1个回答
0
投票

“编辑”提交的事件对象仅包含编辑(加上时间戳)

字段的“名称值”和“值”。
当在链接的电子表格中收到编辑提交时,响应未附加到链接表中。相反,原始提交中的数据已修改,这反映在

rowStart

/

rowEnd
    事件对象中。
  • 本代码将提供电子邮件所需的信息,无论其是原始提交还是编辑提交的信息。关键是使用
  • e.range.rowStart
    确定包含相关数据的行。
    
    // This function is bound to the linked spreadsheet.
    // It is triggered by an installable `onFormSubmit` trigger
    
        function sendEmail(e) {
          Logger.log(JSON.stringify(e)) // DEBUG
          var editedRow = e.range.rowStart
          Logger.log("DEBUG: The edited row = "+editedRow)
        
          var responseSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Form Responses 4")
          var lastResponseCol = responseSheet.getLastColumn()
          var data = responseSheet.getSheetValues(1,1,responseSheet.getLastRow(),lastResponseCol)
          Logger.log("DEBUG: The header row values = "+data[0])
          Logger.log("DEBUG: The data row values = "+data[editedRow-1])
        
        
          var firstName = data[editedRow-1][data[0].indexOf('First Name')]
          var lastName  = data[editedRow-1][data[0].indexOf('Last Name')]
          var memType   = data[editedRow-1][data[0].indexOf('Membership Type')]
          var maaaNum   = data[editedRow-1][data[0].indexOf('MAAA Number')]
          var emailAddr = data[editedRow-1][data[0].indexOf('Email Address')]
          Logger.log("DEBUG: First Name:"+firstName+", Last Name:"+lastName+", Membership Type: "+memType+", MAAA Num:"+maaaNum+", Email Address:"+emailAddr)
        
          // OP to supply balance of function
        
        }
    

在编辑提交之前链接表



在编辑提交后链接表

before

event对象 - 原始提交:

{ "authMode":"FULL", "namedValues":{"Email Address":["[email protected]"],"Timestamp":["10/02/2025 23:22:34"],"MAAA Number":["6543"],"Last Name":["Star"],"First Name":["Ringo and barbara"],"Membership Type":["Life"]}, "range":{"columnEnd":6,"columnStart":1,"rowEnd":3,"rowStart":3}, "source":{}, "triggerUid":"1333227230", "values":["10/02/2025 23:22:34","Ringo and barbara","Star","Life","6543","[email protected]"] } afterevent对象 - 编辑提交:



{ "authMode":"FULL", "namedValues":{"Email Address":[""],"Timestamp":["10/02/2025 23:29:56"],"MAAA Number":[""],"First Name":["Ringo and Barbara"],"Last Name":["Starkey"],"Membership Type":[""]}, "range":{"columnEnd":3,"columnStart":1,"rowEnd":3,"rowStart":3}, "source":{}, "triggerUid":"1333227230", "values":["10/02/2025 23:29:56","Ringo and Barbara","Starkey","","",""] }

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.