Google表单提交事件:TypeError:无法调用未定义的方法“getRow”

时间:2017-11-02 01:43:12

标签: google-apps-script google-form

enter image description here

function onOpen(e) {
  FormApp.getUi()
  .createAddonMenu()
  .addItem('About', 'showAbout')
  .addToUi();
}

function onInstall(e) {
  onOpen(e);
}

function testFormSubmit (event) {
  try {

    //{"response":{},"source":{},"authMode":{},"triggerUid":2146837001}
    Logger.log( JSON.stringify(event) ); 

    var responce = event.response;
    Logger.log("responce.getId(): -------------");
    Logger.log( responce.getId() );

    Logger.log("responce.getEditResponseUrl(): ----------------");
    Logger.log( responce.getEditResponseUrl() );

    var ss = event.source; //Spreadsheet

    //Logger.log( event.range.getA1Notation() );
    Logger.log("event.range.getRow(): ----------------");
    Logger.log( event.range.getRow() );
  } catch (err) {
    Logger.log(err.toString());
  }
}

我有错误:

  

TypeError:无法调用未定义的方法“getRow”

我已阅读Documentation (triggers/events)Installable triggers以及Simple triggers 但我仍然不明白我需要做什么才能获得 event.range.getRow() (其他一切正常)

谢谢。

1 个答案:

答案 0 :(得分:2)

表单提交驱动有两种触发器:Sheets trigger(使用Sheets脚本编辑器创建)和Forms trigger(使用Forms脚本编辑器创建)。他们的事件对象是不同的。表单触发器具有range属性,而表单触发器不具有response属性。您正在使用表单触发器。

如果您需要知道记录条目的行,请使用表格触发器(注意:它不具有app.set('view engine','ejs'); var str = JSON.parse('[{"name":"bill", "age":"26"}, {"name":"jeff", "age":"32"}]'); str.forEach(function(data){ console.log(data.name); }); app.get('/data', function(req, res){ res.render('data', {str: JSON.stringify(str) }); }); 属性)。您链接的文档包含所有这些信息。