【问题标题】: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 列,所以这是两个不同的单元格。一个错字。否则它会按预期工作。

标签: google-apps-script google-sheets cell spreadsheet


【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-01
      • 1970-01-01
      相关资源
      最近更新 更多