Google 애플리케이션에 HtmlService 양식을 사용하여 파일을 업로드하면 항상 "서버 오류"및 스택 추적을 발생

인용문 :

나는 XML 파일을 업로드하고 데이터를 처리하는 내 Google 스프레드 시트에 대한 스크립트를 만들려고 노력하고 있습니다. 나는 양식을 만들 모달 대화 상자에 표시 할 수 있어요,하지만 난 파일 양식을 제출하려고 할 때 나는 이상한 오류 : 아무것도가 스택 드라이버 오류보고에서 오류가 기록됩니다. 그러나, 웹 브라우저 콘솔은 다음과 같은 오류 메시지가 기록합니다

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 애플리케이션 문서뿐만 아니라 I에 유래를 찾을 수있는 몇 가지 오래 된 최근 사례의 예제를 복제 시도하고, 문제는 항상 동일합니다 : 폼 데이터를 전송하는 시간이 올 때, 스크립트가 충돌합니다.

나는이 특별히 파일 입력 필드에 의해 발생 것을 알고있다. 나는 그것을 제거하면, 나는 양식을 제출 할 수있어 그 데이터를 처리합니다. 내가 파일 입력 필드를 추가하면 내가 양식을 제출, 나는 곧 같은 오류가 발생합니다.

나는 문제는 파일이 아닙니다 알 수 있습니다. 나는 하나의 크기가 몇 바이트를 따라 처음에는 큰 (1백25킬로바이트) 텍스트 파일을 업로드했는데, 전혀 파일을 제출도하지, 난 같은 오류를 얻을 수있다. 나는 두 개의 별도의 Google 계정에 크롬과 파이어 폭스에서이 문제가 발생하고있다.

여기에 내 Google 스크립트입니다. updateTracker나는의 스프레드 시트에 배치하는 그리기 개체를 클릭 할 때 메서드가 호출됩니다.

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>

나는 통과 할 때 문제가 정확하게 발생하는 것을 알 수 있습니다 objForm구글 스크립트로 HTML에서. 나는 바로 라인 전에 콘솔에 쓸 수있어 google.script.run.withSuccessHandler(updateUrl).digestXml(objForm);HTML에서,하지만 난에 도착하지 않는 thisUI.alert("Test");구글 스크립트입니다. 내가 매개 변수를 제거하면 objForm에서 digestXml()HTML에서, 충돌은 발생하지 않습니다.

인용문 :

이 문제는 구글 앱의 스크립팅 인터페이스, "V8"의 최근 출시 된 버전에서 발생하는 것으로 보인다.

내가 스크립트를 만들 때, 나는 그들의 스크립팅 인터페이스의이 버전을 사용하라는 메시지입니다. 자신의 기능을 테스트하기 위해 구글을 신뢰, 나는 생각없이 받아 들였다.

내가 대신 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=13632&siteId=1