Apps脚本:将回调传递给ServerHandler的回调

时间:2013-02-14 08:43:27

标签: google-apps-script

我在google电子表格中有一个登录表单,允​​许我登录外部应用程序。我的电子表格允许我不断与此外部应用程序通信,以便我可以使用它执行task1,task2等。在我可以执行task1或task2之前,我需要验证我是否已登录外部应用程序。

所以我的用例是:

  1. 用户调用task1
  2. 我的代码会检查他是否已登录。如果没有,请显示登录表单。
  3. 然后表单首先检查登录,然后调用task1。
  4. 将来,用户会调用task2。
  5. 我的代码需要再次检查相同的方案以显示登录表单。
  6. 我的表单再次检查用户的登录凭据,这次调用task2。
  7. 以下是我的代码的外观:

    function invokeTask1()
    {
        //if user not logged in
            loginForm("performTask1");
        //else
            performTask1();//works fine.
    }
    

    我的loginForm看起来像这样:

    function loginForm(sCallbackFn)
    {
        //Code to create UiInstance and populate it with username and password fields
        //for now, I tried hidden field storing callback for me.
        var hdnCallback = app.createHidden("executeAfterLogin", sCallbackFn).setName("proceedWithExecution");
        //then I already have ServerHandler for Ok Button Click
        var handler = app.createServerHandler('OkButtonEvent');
        handler.addCallbackElement(abcPanel);
        btnOk.addClickHandler(handler);
    }
    

    然后我的OkButtonEvent是我检查登录然后执行相应任务的那个:

    function OkButtonEvent(e)
    {
        //code to pick out e.parameter values and check login on external server application
        //I don't know how to invoke e.parameter.proceedWithExecution here. 
        //This has failed to run without any errors though.
        eval(e.parameter.proceedWithExecution);
    }
    

    最后,我有这些:

    function performTask1()//and also performTask2()
    {
        //doing something. But not getting invoked via login form's ServerHandler.
    }
    

1 个答案:

答案 0 :(得分:0)

尝试this[e.parameter.proceedWithExecution]();

这本身不是UiApp问题 - 这就是你如何通过JavaScript中的字符串名称调用函数。