1

我在谷歌电子表格中有一个登录表单,允​​许我登录到外部应用程序。我的电子表格允许我不断地与这个外部应用程序通信,这样我就可以用它来执行任务 1、任务 2 等等。我需要先验证我是否已登录外部应用程序,然后才能执行任务 1 或任务 2。

所以我的用例是:

  1. 用户调用 task1
  2. 我的代码检查他是否已经登录。如果没有,则显示登录表单。
  3. 然后表单首先检查登录,然后调用 task1。
  4. 稍后,用户调用 task2。
  5. 我的代码需要再次检查相同的场景以显示登录表单。
  6. 我的表单再次检查用户的登录凭据,这次调用 task2。

这是我的代码的外观:

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.
}
4

1 回答 1

0

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

不过,这本身并不是一个 UiApp 问题——这就是您在 JavaScript 中通过字符串名称调用函数的方式。

于 2013-02-14T13:38:39.180 回答