1

Google Apps Script HTML サービスの使用時に HTML5 フォーム検証を使用しようとしています。別のユーザーが尋ねたように、ドキュメントの例によると、送信入力の代わりにボタン入力を使用する必要があります。送信ボタンを使用すると検証が行われるように見えますが、とにかくサーバー関数が呼び出されます。そのユーザーに与えられた答えは私にはうまくいきませんでした。また、フォームを送信するときに 2 つの関数を呼び出したいのですが、これにより複雑になる可能性があります。

これが私がやろうとしていることです: ユーザーがフォームに入力し、Google Doc を生成して URL を渡します。彼が送信ボタンをクリックすると、素敵なスピナーとともに「ドキュメントが作成されています」という jQuery UI ダイアログが表示されます。次に、ドキュメントが生成されたら、リンクを彼に渡します。私は成功ハンドラーを使用して、Google Doc の作業が終了したときに結果を表示しますが、その間、スピナーを表示する関数が必要です。onclick イベントに別の関数を追加するよりも良い方法があるかどうかはわかりません。何らかの方法でプロセスに損害を与える可能性があります。フォームが有効でない場合 (HTML5 検証を使用)、これらの関数を呼び出さない方法はありますか?

これは私のコードの簡略版です:

Code.gs

function generateDocument(formObject) {
  var doc = DocumentApp.create("Document name");
  ...
  return doc.getUrl();
}

Page.html

<main>
  <form id="myForm">
    ...
    <input type="button" value="Generate document" 
        onclick="showProgress();
            google.script.run
            .withSuccessHandler(openDocument)
            .generateDocument(this.parentNode);"/>
  </form>
  <div id="dialog-confirm" title="Your document">
    <div id="dialog-confirm-text"></div>
  </div>

Javascript.html

$( "#dialog-confirm" ).dialog({ autoOpen: false, resizable: false, modal: true });

function showProgress() {
  $( "#dialog-confirm" ).dialog({ buttons: [ { text: "Cancel", click: function() { $( this ).dialog( "close" ); } } ] });
  $( "#dialog-confirm" ).dialog( "open" );
  $( "#dialog-confirm-text" ).html( "<br />Wait a second, your document is being generated...<br /><br /><img src='http://i.stack.imgur.com/FhHRx.gif' alt='Spinner'></img>" );
  return false;
}

function openDocument(url) {
  $( "#dialog-confirm" ).dialog({ autoOpen: false, resizable: false, width: 400, buttons: [ { text: "Ok", click: function() { $( this ).dialog( "close" ); } } ] });
  $( "#dialog-confirm-text" ).html( '<br /><a href="' + url + '" target="_blank">Click here to open and print your document!</a>' );
  return false;
}

ドキュメントで推奨されているように、 3 つの HTML ドキュメントはすべて、include 関数を使用して結合されます (それぞれのタグで動作します) 。

私はjQueryが初めてです。どんなアドバイスでも大歓迎です。

最後の質問: ダイアログの [キャンセル] ボタンはダイアログを閉じますが、ドキュメントの作成は停止しません。このプロセスを停止することは可能ですか? 私はそうは思わない。

事前にどうもありがとうございました。

4

2 に答える 2