如果单元格为空,请跳过并转到下一个

时间:2017-05-22 18:08:19

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

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

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

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

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

Screenshot of the blank cell I am referring to.

正在使用的代码:

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(data[n][0].length=0){
//do nothing 
}
else if(data[n][0].length<1){
//do something
}

2 个答案:

答案 0 :(得分:1)

JavaScript&#34;不是&#34; operator将测试null,undefined和空字符串的值,如果找到任何这些条件,则返回true。 &#34;不是&#34;运营商是一个感叹号。 如果(!数据[N] [0]){   Logger.log(&#39;对于NOT&#39;测试为true)   继续; //执行下一个循环 }

答案 1 :(得分:1)

只需使用

    if (data[n][0]) {

     // do something;


     }

在&#39; if&#39;运算符,括号之间的语句将被评估为&#39; false&#39;如果值为null,undefined或空字符串&#34;&#34;。