スクリプトに公開されたサービスがあります。これは、電子メールに渡すリンクです。アクティブなアカウントがサービスを呼び出すと、UiAppが開いてさらに処理します。私はdoGet()を使用してそれを行います。UiAppでの処理が完了すると、サーバークリックハンドラーにリンクされた[送信]ボタンが表示されます。このボタンは、UiAppフォームを介して行われた変更を処理することになっています。このUiAppを使用して変更したいスプレッドシートの値を変更することはできますが、[送信]ボタンをクリックすると2つの問題が発生します。
- 送信ボタンを押してもUIアプリが閉じない
- ブラウザのmsgBoxを呼び出して、プロセスの完全な確認メッセージを表示できません。
アプリを閉じて返すとUiAppが閉じられるはずだということをたくさん読んだのですが、それは起こっていません。これは、serverClickHandlerが関与していない場合にのみ発生するためだと思います。私は間違っている可能性があります。
誰かが問題1を解決して問題2を回避するのを手伝ってもらえますか?doGet関数とclickHandler関数の関連バージョンを以下に添付します。
function doGet(e) //On invoking service in the mail.
{
//Adding all other elements of the UiApp here
/* …
… All other elements of the UiApp
…
*/
//Adding Submit button to the UiApp
var button = app.createButton('Submit');
var handler = app.createServerClickHandler('click').addCallbackElement(panel);
button.addClickHandler(handler);
panel.add(button);
app.add(panel);
return app;
}
function click(eventInfo) {
var app = UiApp.getActiveApplication();
//Processing the actions that have to be performed on hitting the submit button
/* …
… Processing the actions that have to be performed on hitting the submit button
…
*/
app.close();
return app;
}