Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何返回false而不是“QUOTE”;TypeError:无法读取属性";?_Javascript_Google Apps Script - Fatal编程技术网

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++;
}