我在谷歌电子表格中有一个登录表单,允许我登录到外部应用程序。我的电子表格允许我不断地与这个外部应用程序通信,这样我就可以用它来执行任务 1、任务 2 等等。我需要先验证我是否已登录外部应用程序,然后才能执行任务 1 或任务 2。
所以我的用例是:
- 用户调用 task1
- 我的代码检查他是否已经登录。如果没有,则显示登录表单。
- 然后表单首先检查登录,然后调用 task1。
- 稍后,用户调用 task2。
- 我的代码需要再次检查相同的场景以显示登录表单。
- 我的表单再次检查用户的登录凭据,这次调用 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.
}