我试图在按下表单上的提交后更新我的工作表。提交后,页面不会迭代剩余的命令,并且会在控制台上显示错误“在 updateMan (Server:67) (Easy Roster) 3bf79b2b-341b-490f-87a8-b293d7ded973 中未捕获”。但是当我检查我的工作表时,这些值肯定会更改为我为每个单元格设置的新值。错误来自哪里,我该如何解决?
//server side
function updateMan(data)
{
var ss = SpreadsheetApp.openByUrl(url);
var sheet = ss.getSheetByName("Easy Roster");
var length = data.length;
for (var i = 0; i < length; i++)
{
var max = length - 1;
var row = data[i] + 1;
var newMan = data[max];
sheet.getRange(row, 5).setValue(newMan);
}
return length;
}
//front-end
function updateData(e)
{
e.preventDefault();
var checkedRows = [];
var nRows = document.getElementById("tableBody").childNodes.length;
for (var i = 1; i < nRows; i++)
{
var checkbox = document.getElementById(i);
if (checkbox.checked)
{
var row = document.getElementById("row" + i).childNodes;
row[5].text == e.target["newManField"].value;
checkedRows.push(i);
}
}
checkedRows.push(e.target["newManField"].value);
console.log(checkedRows);
google.script.run
.withSuccessHandler(updateAlert)
.updateMan(checkedRows);
}
function updateAlert(data)
{
console.log(data);
alert("Employee details have been updated.");
window.open("link_to_page", '_top');
}
错误是您最后一次调用sheet.getRange(row, 5).setValue(newMan)
是使用字符串fromdata[max]
与“1”连接到它。在循环之前从数组中删除最后一个元素。
这是一个修改后的版本updateMan
,应该在功能上等效,但没有错误。
/**
* @param {mixed[]} data - list of row numbers, zero-indexed,
* final array element is a string
*/
function updateMan(data) {
var ss = SpreadsheetApp.openByUrl(url);
var sheet = ss.getSheetByName("Easy Roster");
var length = data.length;
var newMan = data.pop(); // removes "newMan" from array
data.forEach(function (row) {
sheet.getRange(row + 1, 5).setValue(newMan);
});
return length; // length prior to the pop - check if that's what you want
}
在您的客户端代码中,您发布的内容似乎是一个错字(尽管它与来自服务器的错误无关):
row[5].text == e.target["newManField"].value; // comparison that does nothing
我想你应该是
row[5].textContent = e.target["newManField"].value; // assign some text content
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句