Webapp,返回文本字符串未按预期工作

时间:2019-04-18 16:03:36

标签: google-apps-script web-applications

这是我的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函数设置为“未定义”。

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 个答案:

答案 0 :(得分:1)

将脚本部分更改为

<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的函数。