繁体   English   中英

无法从未定义中读取属性“ 0”。 错误的Google Apps脚本

[英]Cannot read property “0” from undefined. Error Google Apps Script

我正在获取无法从未定义中读取属性“ 0”。 第16行发生错误。(而(colunaDias [emptyCell] [0] <= dias))

对于Google SpreadSheets,这应该是一个非常简单的功能。 我看不到我在做什么错...

奇怪的是,如果我不使用变量“ dias”,而是使用整数。 while函数起作用。

function myFunction() {

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var leadsSheet = ss.getSheetByName("Leads Todas as Categorias, menos outros - Days (5days)");
  var targetSheet = ss.getSheetByName("feticaria");

  var cellLeads = leadsSheet.getRange(1,1).getValue();
  //var cellTarget = targetSheet.getRange(1,1).setValue(valor);

  var colunaDias = leadsSheet.getRange('B:B').getValues();
  var sourceMedium = leadsSheet.getRange('A:A').getValues();
  var emptyCell = 16;
  var dias = 1;

  while (colunaDias[emptyCell][0] != ""){
    while (colunaDias[emptyCell][0] <= dias){
        dias++;
        emptyCell++;
    }


    emptyCell++;

  }

  Logger.log(emptyCell);


}

我猜colunaDias[emptyCell]是未定义的。 它通过了第一个while条件,因为“ undefined”不等于“”。 如果未定义colunaDias[emptyCell] ,则此行有问题:

var colunaDias = leadsSheet.getRange('B:B').getValues();

要么

colunaDias[emptyCell][0]

问题是“ emptyCell”是16。 getValues()返回矩形值网格的对象。 我将通过检查[0] [0]来测试矩形网格中是否有任何东西。

Logger.log('is there any data? ' + colunaDias[0][0])

如果没有数据,则某些操作失败:

var colunaDias = leadsSheet.getRange('B:B').getValues();

如果那条线工作正常,那么更高的位置是错误的。

您应该检查getSheetByName的返回类型getSheetByName为null。

// The code below will log the index of a sheet named "YourSheetName"
var leadsSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("YourSheetName");
if (leadsSheet != null) {
  Logger.log(leadsSheet.getIndex());
}

我认为,可能导致该错误的唯一原因是emptyCell大于colunaDias数组,即,如果工作表小于16行(如果此处显示的值正确)。

在第一while之前添加此行:

Logger.log('emptyCell = '+emptyCell+'  and colunaDias.length = '+colunaDias.length);

我测试了脚本的副本,该脚本的运行没有错误,除非我在1000行工作表上定义emptyCell > 1000。

我知道几年前的这篇文章,但这是我遇到的最接近的问题。 我只想发布我的答案,以防其他人有一天在这里结束。

由于某种原因,检查变量“ dias”作为字符串传递。 这就是为什么用数字替换它可以使脚本运行。

dias = parseInt(dias);    //use this before the variable needs to be read

我不能说为什么它在被++之后传递字符串,但这会解决它

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM