1

スクリプトに公開されたサービスがあります。これは、電子メールに渡すリンクです。アクティブなアカウントがサービスを呼び出すと、UiAppが開いてさらに処理します。私はdoGet()を使用してそれを行います。UiAppでの処理が完了すると、サーバークリックハンドラーにリンクされた[送信]ボタンが表示されます。このボタンは、UiAppフォームを介して行われた変更を処理することになっています。このUiAppを使用して変更したいスプレッドシートの値を変更することはできますが、[送信]ボタンをクリックすると2つの問題が発生します。

  1. 送信ボタンを押してもUIアプリが閉じない
  2. ブラウザの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;
 }
4

1 に答える 1

2

Browser.messageBoxは、公開されたUiAppでは使用できません。プロセスの最後に表示されるまで表示されないラベルを使用する必要があります。もう1つの問題も問題ではありません。UiAppにはブラウザウィンドウを閉じる方法がなく、UIのメインパネルを非表示にすることができます。

両方の変更を組み合わせると、フォームを非表示にして、「送信していただきありがとうございます」というメッセージに置き換えることができます。

于 2012-06-14T20:02:15.400 に答える