【问题标题】:If cell is empty, skip and go to the next如果单元格为空,则跳过并转到下一个
【发布时间】:2017-05-23 02:50:59
【问题描述】:

我正在使用一些代码,这些代码将采用预定义的范围并将数据复制到与 A 列同名的工作表中。我遇到的问题是 A 列是否有一个空白单元格,这是必需的,然后我收到一个错误,它报告说“无法调用 null 的方法“getRange”。”如果该单元格中有数据,则它可以正常工作。

我尝试过的一些事情包括过滤范围,但是,即使它被隐藏,代码仍然会读取范围。我也尝试过编写 if/then 语句,但没有成功。

I have a sample Google Sheet ready to go here to illustrate the blank space.

这是我所指的空白单元格的屏幕截图:

使用代码:

var ss=SpreadsheetApp.getActiveSpreadsheet();
var master = ss.getSheetByName('Home');
var colWidth = master.getLastColumn();// last used col in masterSheet
var sheets = ss.getSheets();// number of sheets
var editRange = 'B2:B15';


function onOpen() {
  var menuEntries = [ {name: "Copy selected Rows to sheets", functionName: "copyRowsOnConditionV2"},
                     ];
  ss.addMenu("Copy functions",menuEntries);// custom menu
}

function copyRowsOnConditionV2() {
  var sheetNames = [];// array of existing sheet names
  var sheets = ss.getSheets();// number of sheets
  for(s=0;s<sheets.length;++s){sheetNames.push(sheets[s].getName())};

  var selectedfirstRow = ss.getRange(editRange).getRowIndex();
  var selectedHeigth = ss.getRange(editRange).getHeight()
  var selectedFullRange = master.getRange(selectedfirstRow,1,selectedHeigth,1);
  var data = selectedFullRange.getValues();
  for(n=0;n<data.length;++n){
    if(data[n][0].length<16){
     var dest = ss.getSheetByName(data[n][0].toString().replace(/ /g,''));//find the destination sheet
     Logger.log(data[n][0].toString().replace(/ /g,''))
     var destRange = dest.getRange(dest.getLastRow()+1,1);// define range
     master.getRange(selectedfirstRow+n,2,1,1).copyTo(destRange);// and make copy below last row
    }
  }
}

我想我正在寻找某种“如果单元格为空白,则转到下一个单元格”之类的代码。

我的想法会起作用:

If(data[n][0].length==""{
// Do nothing

if(data[n][0].length<16){
// Do something
}
}

关于如何让这样的事情发挥作用的任何想法?

编辑

我发现我刚刚在上面发布的原始 IF 语句的语法不正确。我已经更正了它,但是仍然得到同样的错误。

新的 If Else if 语句:

if(data[n][0].length=0){
//do nothing 
}
else if(data[n][0].length<1){
//do something
}

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    随便用

        if (data[n][0]) {
    
         // do something;
    
    
         }
    

    在'if'运算符中,如果值为null、未定义或空字符串“”,括号之间的语句将被评估为'false'。

    【讨论】:

    • 这对我有用!感谢您查看我的代码并提供解决方案。
    • 这是我的荣幸。请小心使用带有数字的 'if' 语句 - 在 JavaScript 中,它会将 0 评估为 'false',这有点违反直觉。不过,对于字符串,这可以解决问题。
    【解决方案2】:

    JavaScript“not”运算符将测试nullundefined 和一个空字符串的值,如果找到其中任何一个条件,则返回true。 "not" 运算符是一个感叹号。

    if(!data[n][0]){
      Logger.log('tested true for NOT')
      continue;//execute the next loop
    }
    

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-12
      • 2020-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多