我在谷歌应用程序脚本中编写了一个自定义函数,它以2D数组的形式从电子表格中获取值,并循环检查这些值是否未定义或是否为空字符串。但是,我得到的第一个值等于空字符串,当然它不是。我也得到了值不等于空字符串,这根本没有任何意义。第一个
的值这是我的代码:
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 :(得分:0)
我做了类似的事情,它运作得很好。我认为问题的一部分是这样的:while (cells[row][i] != undefined && cells[row][i] != "")
应该是这样的:while (cells[row][i] != 'undefined' && cells[row][i] != "")
我的最后一部分!row[j] in my code
守则:
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;
}
我的电子表格:
答案 1 :(得分:0)
您的函数名称是
lastColumnWithValue
为什么不使用内置的最后一列功能?
getLastColumn
示例强>
SpreadsheetApp.getActiveSheet()。getLastColumn()