Webapp, текстовая строка возврата не работает должным образом - PullRequest
0 голосов
/ 18 апреля 2019

Это код на моей html-странице:

<table id="table_id" class="display"></table>
<div id="status">Goodbye</div>

, а затем и позже

 <script>
  document.getElementById('table_id').innerHTML =   google.script.run.getTable(); 
  document.getElementById('status').innerHTML ='<p>Thanks!</p>';</script>

Часть статуса работает (я тестировал, чтобы убедиться, что скрипты были подтверждены в этой части страницы.

функция getTable, тем не менее, устанавливает значение «undefined».

getTable находится на моей странице code.gs

function getTable(){
  var sh = SpreadsheetApp.openById('XXX-t_SjDjQhe3enJYB40');
  var ss = sh.getSheetByName("Form");
  var data = ss.getDataRange().getValues();
  var htmlTable = '<tr><th>Project</th><th>Who</th><th>Status</th><th>Details</th><th>Advance Status</th></tr>';

  for (var i=0; i<data.length;i++)
    {
    var project = data[i][11]; 
    var who = data[i][1];
    var status = data[i][10];
    var link = data[i][12];
    if (status == ""){ status = 1; ss.getRange(i+1,9).setValue(1);  }      

      htmlTable +="<tr>";          
       htmlTable +="<td>"+project+"</td>";  
      htmlTable +="<td>"+who+"</td>";  
      htmlTable +="<td>"+status+"</td>";  
      htmlTable +="<td><a href='"+link+"'</a></td>"; 





    }//for loop

  htmlTable +='<td><input type ="button" id="arrow" value="-->" onclick =""/></td></tr>';
  //htmlTable += "</table>";

  return htmlTable;       

} // ******************************************** *********************************

Вещи, которые я пробовал.

Изначально в getTable были «табличные» обертки (но потом я подумал, что они могут не взаимодействовать с частью innerhtml). Я также протестировал эту функцию самостоятельно, и она действительно возвращает строку строки, которая является правильной HTML-таблицей, поэтому она не возвращает ничего в обычном контексте.

Мне обязательно нужно использовать здесь обработчик успеха и другую функцию? Я чувствую, что это выглядит так, как будто это должно работать

1 Ответ

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

Измените раздел скрипта на

<script>
  document.getElementById('status').innerHTML ='<p>Thanks!</p>';
  google.script.run.withSuccessHandler(buildTable).getTable();

  function buildTable(myTable) {
    document.getElementById('table_id').innerHTML = myTable;
  }
</script>

Обратите внимание, что это не проверено, но должно помочь вам. WithSuccessHandler используется для определения того, какая функция запускается, когда функция на стороне сервера успешна. Я также добавил бы .withFailureHandler (tableFailure) и функцию с именем tableFailure для сбоя функции на стороне сервера.

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