这是我的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表的一串字符串,因此在正常情况下它不返回任何内容。
我绝对需要在这里使用成功处理程序和其他功能吗?我觉得这应该可行
答案 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的函数。