【问题标题】:Preventing double click on google app script防止双击谷歌应用脚​​本
【发布时间】:2017-05-01 11:12:10
【问题描述】:

当我双击表单提交两次。它创建重复的行。如何防止双击?

谢谢!

function doGet(e) {
  //Logger.log( Utilities.jsonStringify(e) );
  if (!e.parameter.page) {
    // When no specific page requested, return "home page"
    return HtmlService.createTemplateFromFile('employee').evaluate()
    .setTitle('care backup').setSandboxMode(HtmlService.SandboxMode.NATIVE);
  }
  // else, use page parameter to pick an html file from the script
  return HtmlService.createTemplateFromFile(e.parameter['page']).evaluate()
  .setTitle('care').setSandboxMode(HtmlService.SandboxMode.NATIVE);
}

【问题讨论】:

    标签: google-apps-script google-sheets spreadsheet


    【解决方案1】:

    我没有对此进行测试,但只是一个选项 - 还设置一个基于时间的触发器以每隔一段时间运行一次功能重置?

    var recentSubmit = 0;
    
    function doGet(e) {
      //Logger.log( Utilities.jsonStringify(e) );
    if (recentSubmit = 0){  
      if (!e.parameter.page) {
        var recentSubmit = 1;
        // When no specific page requested, return "home page"
        return HtmlService.createTemplateFromFile('employee').evaluate()
        .setTitle('care backup').setSandboxMode(HtmlService.SandboxMode.NATIVE);
      }
      // else, use page parameter to pick an html file from the script
      return HtmlService.createTemplateFromFile(e.parameter['page']).evaluate()
      .setTitle('care').setSandboxMode(HtmlService.SandboxMode.NATIVE);
      }
      Logger.log("Submitted a form to recently, try again later...");
    }
    
    function reset() {
    var recentSubmit = 0;
     }

    【讨论】:

      【解决方案2】:

      您可以尝试使用createClientHandler.forEventSource().setEnabled(false)。它可以禁用提交按钮。它已被弃用,但现在仍然有效。

      完整的代码实现示例在这个SO post:

      function onOpen() {
      
        var app = UiApp.createApplication();
        app.setTitle('My Title');
        app.setHeight(150);
        app.setWidth(300);
      
        var form = app.createFormPanel();
        var flow = app.createFlowPanel();
      
        flow.add(app.createHidden("action", 'action'));
        flow.add(app.createLabel('My Label'));
      
        //Submit
        var submit = app.createButton('Run', app.createServerHandler('notif').addCallbackElement(form)).setId('run');
        var cliHandler = app.createClientHandler().setEnabled().setEnabled(false);
        submit.addClickHandler(cliHandler);
        flow.add(submit);
      
        form.add(flow);
        app.add(form);
        var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
        spreadsheet.show(app);
      
      };
      
      function notif(){  
        //DO NOTHING. JUST SHOW THE button is DISABLED.
      }
      

      点击后按钮变灰..

      【讨论】:

      • 我不希望按钮被禁用。我只是不想双击,我如何在 HtmlService.createTemplateFromFile 上支持这个?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多