1
我在Google電子表格中有一個登錄表單,允許我登錄到外部應用程序。我的電子表格允許我不斷與外部應用程序通信,以便我可以使用它執行task1,task2等。我需要驗證我是否已登錄外部應用程序,然後才能執行task1或task2。Apps腳本:將回調傳遞給ServerHandler的回調
所以我的使用情況是:
- 用戶調用TASK1
- 我的代碼檢查他是否已經登錄。如果沒有,會彈出登錄表單。
- 然後窗體首先檢查登錄,然後調用task1。
- 稍後,用戶調用task2。
- 我的代碼需要再次檢查相同的場景才能顯示登錄表單。
- 我的表單再一次檢查用戶的登錄憑證,這次調用task2。
這裏是我的代碼的外觀:
function invokeTask1()
{
//if user not logged in
loginForm("performTask1");
//else
performTask1();//works fine.
}
我的登錄表單是這樣的:
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.
}