Веб-приложение, как мне обновить таблицу после функции - PullRequest
0 голосов
/ 22 апреля 2019

Хорошо, я немного продвинулся в работе с моим веб-приложением. Сначала я получаю информацию о таблице, используя:

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;

Ответы [ 2 ]

1 голос
/ 22 апреля 2019

Там нет Logger в HTML. info, похоже, тоже не определено. Вместо этого используйте console.info().

0 голосов
/ 22 апреля 2019

У меня был обратный вызов команды:

      <input type ="button" id="slideL" value="Advance" onclick ="google.script.run
.withSuccessHandler(updateOutput)
.withFailureHandler(errorFunction)
.logicAdvance(3)"/>

Исправляет это!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...