Javascript 如何返回false而不是“QUOTE”;TypeError:无法读取属性";?
我有一个在列中查找值并在该行中返回其他列值的代码:Javascript 如何返回false而不是“QUOTE”;TypeError:无法读取属性";?,javascript,google-apps-script,Javascript,Google Apps Script,我有一个在列中查找值并在该行中返回其他列值的代码: function getCurrentRow(e) { var parsedJson = JSON.parse(e.postData.contents); var ss = SpreadsheetApp.openById("..."); var sheet = ss.getSheetByName("List"); var column = sheet.getRange("A:A"); var values = column
function getCurrentRow(e) {
var parsedJson = JSON.parse(e.postData.contents);
var ss = SpreadsheetApp.openById("...");
var sheet = ss.getSheetByName("List");
var column = sheet.getRange("A:A");
var values = column.getValues();
var row = 0;
while ( values[row] && values[row][0] !== parsedJson.myValue ) {
row++;
}
if (values[row][0] === parsedJson.myValue) {
var record = {};
record['top'] = sheet.getRange((row+1), 2).getValue();
record['bottom'] = sheet.getRange((row+1), 3).getValue();
return ContentService.createTextOutput(JSON.stringify(record)).setMimeType(ContentService.MimeType.JSON);
}
}
它可以工作,但是当它找不到myValue时,它会返回
TypeError:无法从未定义中读取属性“0” 在这方面:
if (values[row][0] === parsedJson.myValue) {
我如何解决这个问题并返回“找不到我的值”
应该是
if (values[row] && values[row][0] === parsedJson.myValue) {
问题:
当values[row]
存在时,您将使用row++
向row
添加1。比如说,在A:A
和values[row][0]!=parsedJson.myValue
在所有5行中。在最后一行(实际第5行;索引:4),row++
添加1,行现在是5(索引:5)。但是值[5]
不存在且未定义,它没有[0]
属性
解决方案:
在条件中添加另一个条件,而条件:
var lastRowIndex = values.length;
while ( values[row] &&
values[row][0] !== parsedJson.myValue
&& row < lastRowIndex ) {
row++;
}
var lastRowIndex=values.length;
while(值[行]&&
值[行][0]!==parsedJson.myValue
&&行
完整的错误消息是什么?TypeError:无法从未定义中读取属性“0”。这意味着值[行]
是未定义的@Pointy,谢谢您的回答。你是对的。当列A中没有myValue时,它无法找到它,也无法返回行号。但是我不知道如何解决这个问题。你可以在中执行一个测试,而循环就在if
语句之前,检查值[row]
是否存在;你就不能做同样的事吗?非常感谢!我没有想到这一点。但是您犯了一个小错误:“添加1,行现在是6(索引:5)”。@Neret实际上变量row
是Index。实际行为6,但行
/索引为5。变量名row
可以选择得更好,以避免混淆,因为它只表示数组的索引,而不是实际的行号。
var lastRowIndex = values.length;
while ( values[row] &&
values[row][0] !== parsedJson.myValue
&& row < lastRowIndex ) {
row++;
}