ScriptError: We're sorry, a server error occured. Please wait a bit and try again
ScriptError: We're sorry, a server error occured. Please wait a bit and try again
我不断得到
ScriptError: We're sorry, a server error occured. Please wait a bit and try again.
每当我尝试 运行 以下代码时:
macros.gs
/** @OnlyCurrentDoc */
// When the Sheet is opened, add the menu and create an item in the menu *** WORKING
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Menu')
.addItem('Send Confirmation Email', 'createSideBar')
.addToUi();
}
// Creates the side bar from the Index.html file and displays it *** WORKING
function createSideBar() {
var form = HtmlService.createTemplateFromFile('Index').evaluate().setTitle('Send Confirmation Email');
SpreadsheetApp.getUi().showSidebar(form);
}
// Test function where I make a request to my site *** NOT WORKING
function testerr(formObject) {
UrlFetchApp.fetch('https://webhook.site/...');
return "Complete!";
}
Form.html
<form id="sendEmailForm" onsubmit="handleFormSubmit(this)">
<div class="form-group">
<label for="row_number">Row</label>
<input class="form-control form-control-sm" type="number" id="row_number" name="row_number" required>
</div>
<div class="custom-file">
<input type="file" class="custom-file-input" id="images_input" name="images_input" multiple required>
<label class="custom-file-label" for="images_input">Select images...</label>
</div>
<button id="submit-btn" type="submit" class="btn btn-primary btn-md btn-block">Submit</button>
</form>
JavaScript.html
<script>
// Prevent forms from submitting. *** WORKING
function preventFormSubmit() {
console.log('Entered preventFormSubmit()...');
var forms = document.querySelectorAll('form');
for (var i = 0; i < forms.length; i++) {
forms[i].addEventListener('submit', function (event) {
event.preventDefault();
});
}
console.log('Exited preventFormSubmit()...');
}
window.addEventListener('load', preventFormSubmit); // *** WORKING
// *** NOT WORKING
function handleFormSubmit(formObject) {
console.log('Entered handleFormSubmit()...');
google.script.run.withFailureHandler(updateButton).testerr(formObject);
google.script.run.withSuccessHandler(updateButton).testerr(formObject);
console.log('Exited handleFormSubmit()...');
}
// *** WORKING
function updateButton(str) {
document.getElementById('submit-btn').innerHTML = str;
}
</script>
我只想创建侧边栏表单,提交后会向网站发出请求。唯一的问题是当您单击提交时,将显示 ScriptError。我已经确定了错误发生的位置:当 handleFormSubmit()
在点击提交后被调用时,这一行 google.script.run.withFailureHandler(updateButton).testerr(formObject)
导致错误被抛出。
我尝试注释掉 testerr()
函数中的所有行,并用简单的 return "Complete!";
行替换它们。尽管如此,错误仍然存在。
为什么会这样?我不明白为什么,感谢任何帮助!
我不确定这是否会解决您代码的“所有”问题,但是...
替换
google.script.run.withFailureHandler(updateButton).testerr(formObject);
google.script.run.withSuccessHandler(updateButton).testerr(formObject);
来自
google.script.run
.withFailureHandler(updateButton)
.withSuccessHandler(updateButton)
.testerr(formObject);
以上是因为原始代码对同一个服务器函数进行了两次调用。由于“竞争条件”,这可能会引入一些问题(任何一行都可能先于另一行完成,并且都将调用相同的 client-side 回调)
也许新运行时 (v8) 的组合和 input file="type"
的使用导致了问题。尝试更改为旧运行时。
相关
- google.script.run fails in case of file input
很遗憾,您遇到的问题似乎是一个错误。
在这种情况下你可以做的是 star Issue Tracker here 上的问题,方法是点击 ★ 在问题编号旁边,post 评论并说明您受到该问题的影响。
作为解决方法,您可以尝试切换回旧运行时。
我不断得到
ScriptError: We're sorry, a server error occured. Please wait a bit and try again.
每当我尝试 运行 以下代码时:
macros.gs
/** @OnlyCurrentDoc */
// When the Sheet is opened, add the menu and create an item in the menu *** WORKING
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Menu')
.addItem('Send Confirmation Email', 'createSideBar')
.addToUi();
}
// Creates the side bar from the Index.html file and displays it *** WORKING
function createSideBar() {
var form = HtmlService.createTemplateFromFile('Index').evaluate().setTitle('Send Confirmation Email');
SpreadsheetApp.getUi().showSidebar(form);
}
// Test function where I make a request to my site *** NOT WORKING
function testerr(formObject) {
UrlFetchApp.fetch('https://webhook.site/...');
return "Complete!";
}
Form.html
<form id="sendEmailForm" onsubmit="handleFormSubmit(this)">
<div class="form-group">
<label for="row_number">Row</label>
<input class="form-control form-control-sm" type="number" id="row_number" name="row_number" required>
</div>
<div class="custom-file">
<input type="file" class="custom-file-input" id="images_input" name="images_input" multiple required>
<label class="custom-file-label" for="images_input">Select images...</label>
</div>
<button id="submit-btn" type="submit" class="btn btn-primary btn-md btn-block">Submit</button>
</form>
JavaScript.html
<script>
// Prevent forms from submitting. *** WORKING
function preventFormSubmit() {
console.log('Entered preventFormSubmit()...');
var forms = document.querySelectorAll('form');
for (var i = 0; i < forms.length; i++) {
forms[i].addEventListener('submit', function (event) {
event.preventDefault();
});
}
console.log('Exited preventFormSubmit()...');
}
window.addEventListener('load', preventFormSubmit); // *** WORKING
// *** NOT WORKING
function handleFormSubmit(formObject) {
console.log('Entered handleFormSubmit()...');
google.script.run.withFailureHandler(updateButton).testerr(formObject);
google.script.run.withSuccessHandler(updateButton).testerr(formObject);
console.log('Exited handleFormSubmit()...');
}
// *** WORKING
function updateButton(str) {
document.getElementById('submit-btn').innerHTML = str;
}
</script>
我只想创建侧边栏表单,提交后会向网站发出请求。唯一的问题是当您单击提交时,将显示 ScriptError。我已经确定了错误发生的位置:当 handleFormSubmit()
在点击提交后被调用时,这一行 google.script.run.withFailureHandler(updateButton).testerr(formObject)
导致错误被抛出。
我尝试注释掉 testerr()
函数中的所有行,并用简单的 return "Complete!";
行替换它们。尽管如此,错误仍然存在。
为什么会这样?我不明白为什么,感谢任何帮助!
我不确定这是否会解决您代码的“所有”问题,但是...
替换
google.script.run.withFailureHandler(updateButton).testerr(formObject);
google.script.run.withSuccessHandler(updateButton).testerr(formObject);
来自
google.script.run
.withFailureHandler(updateButton)
.withSuccessHandler(updateButton)
.testerr(formObject);
以上是因为原始代码对同一个服务器函数进行了两次调用。由于“竞争条件”,这可能会引入一些问题(任何一行都可能先于另一行完成,并且都将调用相同的 client-side 回调)
也许新运行时 (v8) 的组合和 input file="type"
的使用导致了问题。尝试更改为旧运行时。
相关
- google.script.run fails in case of file input
很遗憾,您遇到的问题似乎是一个错误。
在这种情况下你可以做的是 star Issue Tracker here 上的问题,方法是点击 ★ 在问题编号旁边,post 评论并说明您受到该问题的影响。
作为解决方法,您可以尝试切换回旧运行时。