Google AppsのHtmlServiceフォームを使用してファイルをアップロードすると、常に「サーバーエラー」とスタックトレースを引き起こし

見積もり :

私は、XMLファイルをアップロードし、そのデータを処理する私のGoogleスプレッドシートのためのスクリプトを作成しようとしています。私は、フォームを作成するモーダルダイアログでそれを表示することができていますが、私は、ファイルにフォームを送信しようとしたとき、私は奇妙なエラーが表示されます。何ものStackdriverエラー報告でのエラーのために記録されます。ただし、Webブラウザコンソールは、次のエラーメッセージを記録します。

Error: We're sorry, a server error occurred. Please wait a bit and try again. 

エラーメッセージはスタックトレースが付属しています:

Zd https://n-z7hx4jjtvixobmaqkddve7tkcdyndjsnh3plmfq-0lu-script.googleusercontent.com/static/macros/client/js/2745927008-mae_html_user_bin_i18n_mae_html_user__en_gb.js:56
    bf https://n-z7hx4jjtvixobmaqkddve7tkcdyndjsnh3plmfq-0lu-script.googleusercontent.com/static/macros/client/js/2745927008-mae_html_user_bin_i18n_mae_html_user__en_gb.js:71
    G https://n-z7hx4jjtvixobmaqkddve7tkcdyndjsnh3plmfq-0lu-script.googleusercontent.com/static/macros/client/js/2745927008-mae_html_user_bin_i18n_mae_html_user__en_gb.js:15
    J https://n-z7hx4jjtvixobmaqkddve7tkcdyndjsnh3plmfq-0lu-script.googleusercontent.com/static/macros/client/js/2745927008-mae_html_user_bin_i18n_mae_html_user__en_gb.js:99
    Id https://n-z7hx4jjtvixobmaqkddve7tkcdyndjsnh3plmfq-0lu-script.googleusercontent.com/static/macros/client/js/2745927008-mae_html_user_bin_i18n_mae_html_user__en_gb.js:47
    Ed https://n-z7hx4jjtvixobmaqkddve7tkcdyndjsnh3plmfq-0lu-script.googleusercontent.com/static/macros/client/js/2745927008-mae_html_user_bin_i18n_mae_html_user__en_gb.js:48
    b https://n-z7hx4jjtvixobmaqkddve7tkcdyndjsnh3plmfq-0lu-script.googleusercontent.com/static/macros/client/js/2745927008-mae_html_user_bin_i18n_mae_html_user__en_gb.js:44

それはGoogleのサーバーに大きな縮小さJavaScriptファイルを指すようもちろん、スタックトレースは、ここでは役に立ちません。

私は現在、Google Appsのドキュメントと同様に、私はStackOverflowの上で見つけることができるいくつかの古いものと最近の例では例を複製しようとしている、との問題は常に同じです:フォームデータを提出する時間が来ると、スクリプトがクラッシュします。

私は、これは、特にファイル入力フィールドによって引き起こされていることを知っています。私はそれを削除した場合、私は、フォームを送信し、そのデータを処理することができますよ。私は、ファイルの入力フィールドを追加した場合、私は、フォームを提出するよう、私はすぐにエラーが発生します。

私は、問題はファイルではありません伝えることができます。私は1つによって、サイズが数バイトに続く、最初は大(125キロバイト)テキストファイルをアップロードしようとした、とすべてで任意のファイルを提出してもいない、と私は同じエラーを取得しています。私は2つの別々のGoogleアカウントに、ChromeとFirefoxの両方で、この問題に遭遇しています。

ここに私のGoogleのスクリプトがあります。updateTracker私はspreadhseetに配置されたことを描画オブジェクトをクリックしたときにメソッドが呼び出されます。

function updateTracker()
{  
  var thisUI = SpreadsheetApp.getUi();
  var htmlUpdatePage = HtmlService.createHtmlOutputFromFile('myPage');
  var updatePrompt = thisUI.showModalDialog(htmlUpdatePage, 'Update');
}

function digestXml(theForm) {
  //var fileBlob = theForm.xmlFile;
  var thisUI = SpreadsheetApp.getUi();
  thisUI.alert("Test");
}

ここに私のHTMLファイルには、「マイページ」、次のとおりです。

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script>
      // Prevent forms from submitting.
      function preventFormSubmit() {
        var forms = document.querySelectorAll('form');
        for (var i = 0; i < forms.length; i++) {
          forms[i].addEventListener('submit', function(event) {
            event.preventDefault();
          });
        }
      }
      window.addEventListener('load', preventFormSubmit);     

      function submitXml(objForm)
      {
        google.script.run.withSuccessHandler(updateUrl).digestXml(objForm);
      }
      function updateUrl(url) {
        var div = document.getElementById('output');
        div.innerHTML = 'Got it!';
      }
    </script>

  </head>
  <body>
    <form id="xmlForm" onsubmit="submitXml(this)">    
      <input type="file" value="Browse" name="xmlFile" />
      <input type="submit" value="Digest" />
    </form>
    <div id="output"></div>
  </body>
</html>

私は合格しようとするときに問題が発生し、正確に伝えることができobjFormGoogleのスクリプトをHTMLから。私は、右の行の前に、コンソールに書き込むことができるよgoogle.script.run.withSuccessHandler(updateUrl).digestXml(objForm);HTMLで、私はに得ることはありませんthisUI.alert("Test");グーグルスクリプトインチ 私は、パラメータを削除した場合objFormdigestXml()HTMLで、クラッシュは発生しません。

見積もり :

問題だけはGoogle Appのスクリプトインターフェイス、「V8」の最近リリースされたバージョンで発生することが表示されます。

私は、スクリプトを作成するとき、私は自分のスクリプトインターフェイスのこのバージョンを使用するように求められています。その機能をテストするためにGoogleを信頼し、私は何も考えずに受け入れ。

私が代わりにV8の使用STABLEへの私のスクリプトの設定ファイルを編集した場合、私はこの問題は発生しません。あなたがこの問題を抱えている場合は、ここでそれを行う方法は次のとおりです。

  1. スクリプトエディタを開きます。
  2. トップメニューでは、マニフェストファイルを表示]> [表示]を選択します。
  3. ファイルの一覧で、開きますappsscript.json
  4. 交換する"runtimeVersion": "V8""runtimeVersion": "STABLE"
  5. セーブ。

私は現在の安定版はV8の賛成で、最終的に廃止される予定推測として、しかしこれは憂慮すべきです。私はこのための問題をログに記録:https://issuetracker.google.com/issues/149980602

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=13633&siteId=1