我可以开发一个向导应用程序(顺序提交表单)吗?

用户名

据我所知,在Google Apps脚本应用程序中,只有一个doGet()可以触发唯一的doPost()。

我想执行一个Software Publisher System,该用户可以上传文件或在表单中填写修订信息,然后将Submit推送到下一步。最后一页将显示输入信息,发送电子邮件给伙计并完成所有操作。

但是,在按下“提交”按钮后如何输入下一个表单?

我尝试了一种方法,该方法在doPost()中创建第二步和第三步表单,并使用try ... catch来区分触发当前步骤的表单,例如以下代码。(由于任何步骤都无法使非上一步抛出该回调项,因此会产生异常)

它工作得很好,但我认为它没有感觉,也很愚蠢。有更好的解决方案吗?拜托了

//---------------------------------------------------------------------------
function doGet(e)
{
  var app = UiApp.createApplication().setTitle("AP Publisher");    

  createFileUploadForm(app);

  return app;
}
//---------------------------------------------------------------------------
function doPost(e) 
{  
  var app = UiApp.getActiveApplication();                 

  try {
    // 2nd step form
    var fileBlob = e.parameter.thefile;         

    createRevisionForm();
  }
  catch(error) {
    try {
      // 3rd step form
      createConfirmForm(e);
    }
    catch(error2) {
      //Complete       
      sendMail(e);            
      modifySitePageContent(e);            
      saveHistoryFile(e);   

      showConfirmedInfo(e);
    }
  }

  return app;    
}
莫格斯达

该答案是完全根据上一个的数据动态地以创建新页面的形式复制的。页面

使用该UiApp服务,您具有一个doGet()和一个doPost()功能……但是,这是扩展它们以支持动态多部分表单的一种方式。(示例代码是从此答案中借用的。)

doGet()只需构建表单的part1。但是,在表单中,您需要按名称标识表单,如下所示:

  var form = app.createFormPanel().setId("emailCopyForm");

doPost()然后,将把对后期操作的处理转移到不同的功能,具体取决于已提交的表单。见下文。(还包括:reportFormParameters (),这是一个默认处理程序,它将显示由表单部件收集的所有数据。)

/**
 * doPost function with multi-form handling. Individual form handlers must
 * return UiApp instances.
 */
function doPost(eventInfo) {
  var app;
  Logger.log("Form ID = %s", eventInfo.parameter.formId);
  // Call appropriate handler for the posted form
  switch (eventInfo.parameter.formId) {
    case 'emailCopyForm':
      app = postEmailCopyForm(eventInfo);
      break;
    default:
      app = reportFormParameters (eventInfo);
      break;
  }
  return app;
}

/**
 * Debug function - returns a UiInstance containing all parameters from the
 * provided form Event.
 *
 * Example of use:
 * <pre>
 *     function doPost(eventInfo) {
 *       return reportFormParameters(eventInfo);
 *     }
 * </pre>
 *
 * @param {Event} eventInfo Event from UiApp Form submission
 *
 * @return {UiInstance}
 */
function reportFormParameters (eventInfo) {
  var app = UiApp.getActiveApplication();
  var panel = app.createVerticalPanel();
  panel.add(app.createLabel("Form submitted"));
  for (var param in eventInfo.parameter) {
    switch (param) {
      // Skip the noise; these keys are used internally by UiApp
      case 'lib':
      case 'appId':
      case 'formId':
      case 'token':
      case 'csid':
      case 'mid':
        break;

      // Report parameters named in form
      default:
        panel.add(app.createLabel(" - " + param + " = " + eventInfo.parameter[param]));
        break;
    }
  }
  app.add(panel);
  return app;
}

为了生成每个表单部分,后续的表单处理程序可以使用在先前的部分中检索到的数据向ui动态添加新的Form对象。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我可以在Ice Cream Sandwich 4.0.4上使用Webkit 537.36开发一个Android Web应用程序吗

来自分类Dev

我可以开发一个asp.net应用程序并将其作为设置进行部署吗?在C#中

来自分类Dev

我可以从rebar3运行一个escript应用程序吗?

来自分类Dev

我可以使用matplotlib应用程序分发一个额外的字体文件吗?

来自分类Dev

可以将我的窗口附加到另一个应用程序的窗口吗?

来自分类Dev

我可以创建一个Android应用程序作为模板吗?

来自分类Dev

有一个可以查看我的应用程序的按钮吗?

来自分类Dev

我可以将整个应用程序放在一个JAR文件中吗?

来自分类Dev

我可以将用户(及其应用程序)限制为一个网络接口吗?

来自分类Dev

我可以在一个应用程序中集成UIViewController和UICollectionViewController吗?

来自分类Dev

我可以将Intent发送到另一个应用程序吗

来自分类Dev

我可以只为一个应用程序创建管理员权限吗?

来自分类Dev

可以jar一个spring应用程序吗?

来自分类Dev

我可以在Azure AD SSO中将颁发给一个应用程序的令牌与另一个应用程序一起使用吗?

来自分类Dev

我可以使用来自一个应用程序的指标来自动扩展另一个应用程序吗?

来自分类Dev

我可以让Windows OS将一个或2个内核专用于特定的程序/应用程序吗?

来自分类Dev

一个应用程序可以访问其他应用程序的事件吗?

来自分类Dev

我可以在Gambas中开发ubuntu应用程序吗

来自分类Dev

当我的应用程序托管在另一个地方时,我可以实现Active Directory吗?

来自分类Dev

我们可以在一个应用程序中使用两个MTProto连接吗?

来自分类Dev

我可以在一个网站上使用两个 Facebook 应用程序 ID 吗?

来自分类Dev

一个应用程序可以运行另一个应用程序的代码吗?

来自分类Dev

一个应用程序可以访问Android中另一个应用程序的屏幕吗?

来自分类Dev

使用另一个应用程序时可以控制一个应用程序吗?

来自分类Dev

一个应用程序可以更改另一个应用程序的设置吗?

来自分类Dev

一个应用程序可以拦截另一个应用程序的网络流量吗?

来自分类Dev

我可以将同一应用程序的多个版本提交到Apple Store吗?

来自分类Dev

是否可以开发一个Android应用程序来控制Sony SmartEyeglass?

来自分类Dev

我们可以注册一个Web应用程序以接收来自Azure通知中心的通知吗?

Related 相关文章

  1. 1

    我可以在Ice Cream Sandwich 4.0.4上使用Webkit 537.36开发一个Android Web应用程序吗

  2. 2

    我可以开发一个asp.net应用程序并将其作为设置进行部署吗?在C#中

  3. 3

    我可以从rebar3运行一个escript应用程序吗?

  4. 4

    我可以使用matplotlib应用程序分发一个额外的字体文件吗?

  5. 5

    可以将我的窗口附加到另一个应用程序的窗口吗?

  6. 6

    我可以创建一个Android应用程序作为模板吗?

  7. 7

    有一个可以查看我的应用程序的按钮吗?

  8. 8

    我可以将整个应用程序放在一个JAR文件中吗?

  9. 9

    我可以将用户(及其应用程序)限制为一个网络接口吗?

  10. 10

    我可以在一个应用程序中集成UIViewController和UICollectionViewController吗?

  11. 11

    我可以将Intent发送到另一个应用程序吗

  12. 12

    我可以只为一个应用程序创建管理员权限吗?

  13. 13

    可以jar一个spring应用程序吗?

  14. 14

    我可以在Azure AD SSO中将颁发给一个应用程序的令牌与另一个应用程序一起使用吗?

  15. 15

    我可以使用来自一个应用程序的指标来自动扩展另一个应用程序吗?

  16. 16

    我可以让Windows OS将一个或2个内核专用于特定的程序/应用程序吗?

  17. 17

    一个应用程序可以访问其他应用程序的事件吗?

  18. 18

    我可以在Gambas中开发ubuntu应用程序吗

  19. 19

    当我的应用程序托管在另一个地方时,我可以实现Active Directory吗?

  20. 20

    我们可以在一个应用程序中使用两个MTProto连接吗?

  21. 21

    我可以在一个网站上使用两个 Facebook 应用程序 ID 吗?

  22. 22

    一个应用程序可以运行另一个应用程序的代码吗?

  23. 23

    一个应用程序可以访问Android中另一个应用程序的屏幕吗?

  24. 24

    使用另一个应用程序时可以控制一个应用程序吗?

  25. 25

    一个应用程序可以更改另一个应用程序的设置吗?

  26. 26

    一个应用程序可以拦截另一个应用程序的网络流量吗?

  27. 27

    我可以将同一应用程序的多个版本提交到Apple Store吗?

  28. 28

    是否可以开发一个Android应用程序来控制Sony SmartEyeglass?

  29. 29

    我们可以注册一个Web应用程序以接收来自Azure通知中心的通知吗?

热门标签

归档