谷歌表格脚本:检查单元格是否为空

43

如果单元格为空,我想在其中输入一个变量。然而if语句不起作用。有什么建议吗?

var ss=SpreadsheetApp.getActiveSpreadsheet();
var r=ss.getRange("'odpovědi'!A2:J");

var rws=r.getNumRows();

ax=r.getCell(rws-1, 10).getValue();

if (ax == "") {
  ax = "foo";
  r.getCell(rws-1, 9).setValue(ax);
}

4
第十列和第九列在不同的行上,所以它们是两个不同的单元格。这是一个打字错误,除此之外一切都符合预期。 - user6655984
3个回答

52

不需要提取值来确定单元格是否为空。Google Spreadsheet API已经有了一个方法可以实现这一点:Range - isBlank方法

var cell = r.getCell(rws-1, 10);

if (cell.isBlank()) {
    cell.setValue("foo");
}

2
该方法 isBlank() 是否有否定形式?代码行 cell.isNotBlank() - Snail-Horn
不,唯一可用的选项是使用 _否定符号_,例如:if ( !cell.isBlank() ) - A. Masson
假设从我的行范围内,前五行不为空,但是最后三行为空,那么该怎么办?sh.getRange(2, 1, 8, 26).getValues();?如何检查是否为空? - Noor Hossain

12

尝试:

function myFunction() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var s=ss.getSheetByName('odpovědi')
  var lr=s.getLastRow()  
  var ax=s.getRange(lr, 10).getValue();
     if(ax == ""){
        ax = "foo";
        s.getRange(lr, 10).setValue(ax);
  }
  }

9
如果您已经有单元格的值,则使用 ===!== 运算符,如果您想避免类型转换(其中 0 == "" )。
减少非空单元格值的代码片段
var sheet = ss.getSheets()[0];     
var range = sheet.getRange("E2:H5");
var currentValues = range.getValues();  

var newValues = [];
for (var row in currentValues) {
  var newRow = []; 
  for (var col in currentValues[row]) {
    if (currentValues[row][col] !==  "") { // if not empty cell
      newRow[col] = currentValues[row][col] - 1;          
    }
    else {
      newRow[col] = currentValues[row][col];
    }
  }
  newValues[row] = newRow;
}    
range.setValues(newValues);

点赞这个是因为它非常有用,知道空单元格在从getValues()返回的数组中表示为空字符串"" - Seth Battis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接