簡體   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