나는 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 내 스크립트의 구성 파일을 편집 할 경우, 나는 문제가 발생하지 않습니다. 이 문제가 발생하는 경우 여기 그렇게하는 방법은 다음과 같습니다
- 스크립트 편집기를 엽니 다.
- 상단 메뉴에서 매니페스트 파일을보기>보기를 선택합니다.
- 파일 목록에서 열려
appsscript.json
. - 교체
"runtimeVersion": "V8"
로"runtimeVersion": "STABLE"
- 저장.
나는 현재 안정 버전은 V8에 찬성 결국 더 이상 사용되지 않습니다 추정 이것은 그러나 놀라운됩니다. 나는이에 대한 문제 기록 : https://issuetracker.google.com/issues/149980602