2017-09-22 58 views
0

我已经在Google应用程序脚本中编写了一个自定义函数,该函数采用二维数组形式的电子表格中的值,并通过循环检查值是否未定义或一个空的字符串。但是,我得到的第一个值等于一个空字符串,当然不是。我也得到这个值不等于一个空字符串,这根本没有任何意义。第一数组结尾数组功能在Google Apps脚本中无法正常工作

值这里是我的代码:

function lastColumnWithValue(row, cells) { 

    var i = 0; 
//cells[row][i] = 0 to start with 
//not getting into while loop 
    Logger.log(cells[row][i]); 
    Logger.log(cells[row][i] === ""); 
    Logger.log(cells[row][i] != undefined && cells[row][i] != "") 
    Logger.log(cells[row][i] != undefined); 
    Logger.log(cells[row][i] != "")//returns false 
    Logger.log(cells[row][i] === "")//returns false 

    while (cells[row][i] != undefined && cells[row][i] != "") { 

    i++; 



    } 
    Logger.log("i - 1: " + (i - 1)) 
    return i - 1; 




} 
+0

过得好了'cells'参数值?我测试了放置'var sheet = SpreadsheetApp.getActiveSpreadsheet()。getSheets()[0]; var cells = sheet.getRange(“A1:F5”)。getValues(); var row = 1'内的函数并不能重现该问题 –

回答

0

我做了一个类似的诸如此类的事情,它工作得很好。我认为问题的一部分是这样的:while (cells[row][i] != undefined && cells[row][i] != "")应该是这样的:在过去的一部分,我只是做了该!row[j] in my code

守则while (cells[row][i] != 'undefined' && cells[row][i] != "")

function testingMyData() 
{ 
    var ss=SpreadsheetApp.getActive(); 
    var sh=ss.getActiveSheet(); 
    var rg=sh.getDataRange(); 
    var vA=rg.getValues(); 
    if(!containsNulls(vA)) 
    { 
     SpreadsheetApp.getUi().alert('No nulls'); 
    } 
    else 
    { 
     SpreadsheetApp.getUi().alert('Nulls'); 
    } 

} 

function containsNulls(A) 
{ 
    for(var i=0;i<A.length;i++) 
    { 
     var row=A[i]; 
     for(var j=0;j<row.length;j++) 
     { 
     if(!row[j] && typeof(row[j])!='undefined') 
     { 
      return true; 
     } 
     } 
    } 
    return false; 
} 

我的电子表格:

enter image description here

0

您的功能名称是

lastColumnWithValue

为什么不使用内置的最后一列功能?

getLastColumn


SpreadsheetApp.getActiveSheet()。getLastColumn()

相关问题