【问题标题】:Google Apps Script ElementCallback: "Error encountered: "parameter" is not defined."Google Apps 脚本 ElementCallback:“遇到错误:未定义“参数”。”
【发布时间】:2013-08-23 06:49:37
【问题描述】:

我正在尝试编写一个小的 Google Apps 脚本来帮助用户导航和使用 Google 电子表格。他们可以填写一个小表格。除其他外,它会将他们带到特定的工作表。

但是,表单的回调似乎不起作用。我真的不知道为什么。我从适用于我的教程 (http://www.youtube.com/watch?v=5VmEPo6Rkq4) 中提取了 ServerClickHandler/ElementCallBack 代码。我修剪了脚本并尝试使用不同的小部件和面板。似乎没有任何效果。这可能是我看不到的愚蠢的东西。

当我单击此脚本创建的表单中的提交按钮时,我收到以下错误: “遇到错误:“参数”未定义。”

在我的绳索尽头。调试了3个小时。 (新手程序员——请原谅我的无能。)

提前感谢您的帮助。

function createIncidentDialog() {
  var app = UiApp.createApplication().setTitle('Incident');
  var panel = app.createVerticalPanel();
  var grid = app.createGrid(3,2).setId('submissionGrid');

  var shortNameLabel = app.createLabel('Incident Code');
  var shortNameTextBox = app.createTextBox().setName('shortName').setId('shortName');

  var regionLabel = app.createLabel('Select Geographic Region');
  var radio1 = app.createRadioButton('group1', 'North').setName('north').setId('north');
  var radio2 = app.createRadioButton('group1', 'Central').setName('central').setId('central');
  var radio3 = app.createRadioButton('group1', 'South').setName('south').setId('south');
  var regionPicker = app.createVerticalPanel().add(radio1).add(radio2).add(radio3);

  var submitButton = app.createButton('Submit');
  var submitLabel = app.createLabel("Click!");

  grid.setWidget(0, 0, shortNameLabel)
   .setWidget(0, 1, shortNameTextBox)
   .setWidget(1, 0, regionLabel)
   .setWidget(1, 1, regionPicker)
   .setWidget(2, 0, submitButton)
   .setWidget(2, 1, submitLabel);
  panel.add(grid);
  var clickHandler = app.createServerClickHandler("writeIncident");
  submitButton.addClickHandler(clickHandler);
  clickHandler.addCallbackElement(panel);
  // assemble everything in app
  app.add(panel);
  var doc = SpreadsheetApp.getActive();
  // show the app
  doc.show(app);

}

// this function responds to submit button
function writeIncident(e) {
 var app = UiApp.getActiveApplication();
  var shortNameValue = e.parameter.shortName;

  if (e,parameter.north == 1){
    var regionValue = "North";
  }
  else if (e.parameter.central == 1){
    var regionValue = "Central";
  }
  else if (e.parameter.south == 1){
    var regionValue = "South";
  }

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  ss.setActiveSheet(ss.getSheetByName(regionValue));

  return app.close();
};

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我看你有错别字

    if (e,parameter.north == 1){
        var regionValue = "North";
      }
    

    尝试用点替换逗号。

    【讨论】:

    • 感谢您的收获!我也放弃了单选按钮,因为我似乎无法读出它们的值(而且它们也没有执行唯一一个可以激活的规则。)