【发布时间】:2020-08-19 11:23:53
【问题描述】:
我正在尝试制作一个简单的网络应用程序,当我输入学生的 ID 号时,它会返回学生的姓名。该应用程序应调用 google 脚本函数 (searchIDReturnName),然后将其返回值传回前端的 updateName 函数。
这是我的 Apps 脚本:
var url ="https://docs.google.com/spreadsheets/d/1zGW23PVYvTsORRs0jrKNdHqb73arsRYxy22O45k60vQ/edit?usp=sharing";
function doGet(e) {
return HtmlService.createHtmlOutputFromFile("page");
}
function searchIDReturnName(idNumber)
{
var ss = SpreadsheetApp.openByUrl(url);
var ws = ss.getSheetByName("StudentList");
var data = ws.getRange(2,1,ws.getLastRow()-1,2).getValues();
var idNumberList = data.map(function(r){return r[0];});
var names = data.map(function(r){return r[1];});
var position = idNumberList.indexOf(idNumber);
if(position > -1)
{
return names[position];
}
else
{
return 'No student found';
}
}
这是我的 HTML:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<label> ID Number: </label> <input type = "text" id = "studentID">
<br>
<label id = "nameLabel" > Name: </label> <label id = "studentName"> </label>
<script>
document.getElementById("studentID").addEventListener("input", searchStudent);
function searchStudent()
{
var idNumber = document.getElementById("studentID").value;
if(idNumber.length === 5)
{
google.script.run.withSuccessHandler(updateName).searchIDReturnName(idNumber);
document.getElementById("studentName").innerHTML = "If";
}
else
{
document.getElementById("studentName").innerHTML = "Running";
}
}
function updateName(studentName)
{
document.getElementByID("studentName").innerHTML = studentName;
}
</script>
</body>
</html>
我已经验证 searchIDReturnName 函数实际上在电子表格中找到了匹配的学生,它只是不会返回那个值。
【问题讨论】:
-
它不会将该值返回给我的网络应用程序。是什么让你这么认为?
-
为了测试这一点,我在 updateName 函数中添加了类似这样的代码:document.getElementByID("studentName").innerHTML = "I ran updateName".
-
你的代码中有
id“studentName”的元素吗?如果您的某些函数没有运行,您应该通过在每个函数中实现concole.log()(而不是附加到innerHTML)来记录重要值来进行故障排除。另外,请转到View-Executions以发现错误。 -
发生了什么?流程: 1.client 调用服务器函数
searchIDReturnName2.searchIDReturnName运行并将值返回给客户端。 3.updateName在客户端上调用 4.label id = "studentName"更新为学生姓名。您认为以上哪一项是问题所在?最多可以使用服务器日志测试/检查第 2 步(查看> 执行将显示是否以及何时调用该函数)。可以通过在updateName中添加console.log("I was called")并检查浏览器上的 Chrome/Firefox>devtools>console 来测试第 3 步。 -
Apps 脚本方面的常见错误来源是,例如工作表的行数少于两行。
标签: google-apps-script google-sheets