Google Apps脚本中的doPost两次?

时间:2013-08-01 18:53:22

标签: google-apps-script google-apps

我有一个使用doGet和doPost在Google Apps脚本中编写的网络部署表单。在doPost中,代码检查用户是否正确填写了表单(例如,不将某些内容留空)。如果没有,它会突出显示需要修复的内容并添加警告标签。如果一切正常,它会将表单数据写入电子表格。

问题是,如果用户修复问题,似乎不能再次调用doPost。

有什么想法?谢谢!

编辑:我正在使用UiService 编辑:这是一个非常简化的应用程序版本:

function doGet(e) {
  var app = UiApp.createApplication();
  var mainForm = app.createFormPanel().setId('mainForm');
  var formContent = app.createVerticalPanel().setId('formContent');
  var userName = app.createTextBox().setId('userName').setName('userName');
  var passport = app.createFileUpload().setName('passport');
  var submitButton = app.createSubmitButton('submit here');  
  var submitButtonWarning = app.createLabel('Something is wrong.').setId('submitButtonWarning')
  .setVisible(false);

  formContent
  .add(userName)
  .add(passport)
  .add(submitButton)
  .add(submitButtonWarning);

  mainForm.add(formContent);
  app.add(mainForm);
  return app;
}

function doPost(e) {
  var app = UiApp.getActiveApplication();
  var userName = e.parameter.userName;
  var passport = e.parameter.passport;
  if (userName == 'no') {
    app.getElementById('submitButtonWarning').setVisible(true);
    app.add(app.getElementById('formContent'));
    return app;
  } else {
    app.getElementById('submitButtonWarning').setVisible(false);
    app.add(app.getElementById('formContent'));
    return app;
  }
  return app; 
}

1 个答案:

答案 0 :(得分:0)

我认为您只是在doPost中向应用添加了错误的UI元素。 而不是

app.add(app.getElementById('formContent'));

使用

app.add(app.getElementById('mainForm'));