Google 电子表格脚本:检查单元格是不是为空

Posted

技术标签:

【中文标题】Google 电子表格脚本:检查单元格是不是为空【英文标题】:Google Spreadheets Scripts: check if cell is emptyGoogle 电子表格脚本:检查单元格是否为空 【发布时间】:2017-05-30 14:49:20 【问题描述】:

只有当单元格为空时,我才想在单元格中输入变量。但是,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);

【问题讨论】:

一行有 10 列,另一行有 9 列,所以这是两个不同的单元格。一个错字。否则它会按预期工作。 【参考方案1】:

试试:

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);
  
  

【讨论】:

【参考方案2】:

无需提取值来确定单元格是否为空。 Google 电子表格 API 已经有一个方法:Range - isBlank method

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

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

【讨论】:

这个方法isBlank()有否定吗?线cell.isNotBlank(). 否,因此唯一可用的选项是使用 否定符号,例如:if ( !cell.isBlank() ) 假设,在我的行范围内,前五行不是空白,但后三行是空白,那该怎么办? sh.getRange(2, 1, 8, 26).getValues(); ?如何检查空白?【参考方案3】:

如果您已经有单元格值,则使用 ===!== 运算符以避免类型转换(其中 0 == "" )。

用于减少非空单元格值的代码 sn-p

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);

【讨论】:

以上是关于Google 电子表格脚本:检查单元格是不是为空的主要内容,如果未能解决你的问题,请参考以下文章

Google 表格脚本 - 根据单元格作为今天的日期发送电子邮件

自定义公式 Google 电子表格

Google 电子表格在消耗 400000 个单元格之前停止存储数据

带有自定义脚本的公式不会在 Google 电子表格中更新

Google Apps脚本:表格形式数据处理,如果某些单元格为空,则删除行,同时维护某些列

当单元格更改文本时更改行颜色的脚本