Хорошо, я немного продвинулся в работе с моим веб-приложением. Сначала я получаю информацию о таблице, используя:
google.script.run.withSuccessHandler(buildTable).getTable();
Функция для этого
function buildTable(myTable) {
document.getElementById('table_id').innerHTML = myTable;
}
Но у меня есть другая функция, которая изменяет значения в таблице (которая работает правильно), но она не перезапускает функцию загрузки таблицы
<input type ="button" id="slideL" value="Advance" onclick ="google.script.run.logicAdvance(3).withSuccessHandler(updateOutput)"/>
, который вызывает логическое продвижение успешно (значение изменяется), но не updateOutput вообще
function updateOutput(){
Logger.log("Update Output"+info);
document.getElementById('table_id').style.display ='block';
document.getElementById('ask').style.display = "none";
google.script.run.withSuccessHandler(buildTable).getTable();
}
Есть идеи?
Обновление: Хорошо, я сбросил вызовы в логгере и добавил ошибку с ошибкой, которая, похоже, тоже не работает. Текущая версия кода.
function updateOutput(result){
document.getElementById('ask').innerHTML = result.displayInfo;
document.getElementById('table_id').style.display ='block';
document.getElementById('ask').style.display = "none";
google.script.run.withSuccessHandler(buildTable).getTable();
}
function errorFunction (e){
document.getElementById('ask').innerHTML = e;
}
<div id="ask" style="display:block">Do you want to proceed with this idea?
<div id="choiceBox">
<input type ="button" id="slideL" value="Advance" onclick ="google.script.run.logicAdvance(3).withSuccessHandler(updateOutput).withFailureHandler(errorFunction)"/>
<input type ="button" id="declineButton" value="Decline" onclick ="finish()"/>
</div>
</div>
В результате этого ничего не происходит, ни функции успеха, ни ошибки не обновляют содержание текста запроса. Каким-то образом мы блуждаем в дикой природе бэкэнда и не возвращаемся?
Эти две функции работают, просто не возвращаются, я не думаю?
function logicAdvance(row){
var scriptProperties = PropertiesService.getScriptProperties();
scriptProperties.setProperty('row', row);
var status = ss.getRange(row,9).getValue();
var myObj ={displayValue : "none"};
if (status == 1){myObj.displayValue= "block"; return myObj;}
if (status == 4){myObj.displayValue= "block"; return myObj;}
advanceStatus(row);
return myObj;}
//- This function changes the status of the object
function advanceStatus(row){
var sh = SpreadsheetApp.openById('xx');
var ss = sh.getSheetByName("Form Responses 1");
var status = ss.getRange(row, 9);
var newStatus = parseInt(status.getValue()) + 1;
if (newStatus == 20) return;
if (newStatus == 9) return;
status.setValue(newStatus);
return;