Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果单元格为空,请跳过并转到下一个单元格_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

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

Javascript 如果单元格为空,请跳过并转到下一个单元格,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在使用一些代码,这些代码将获取预定义的范围,并将数据复制到与a列同名的工作表中。我遇到的问题是,如果a列有一个空白单元格(这是必需的),那么我会收到一个错误,在该错误中,它报告说“无法调用null的“getRange”方法。”如果该单元中有数据,则它工作正常 我尝试过的一些事情包括过滤范围,但是,代码仍然读取范围,即使它是隐藏的。我也尝试过编写if/then语句,但没有成功 这是我所指的空白单元格的截图: 正在使用的代码: var ss=SpreadsheetApp.getActiveS

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

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

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

正在使用的代码:

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
    }
  }
}
var ss=SpreadsheetApp.getActiveSpreadsheet();
var master=ss.getSheetByName('Home');
var colWidth=master.getLastColumn();//母版中最后使用的颜色
var sheets=ss.getSheets();//张数
var editRange='B2:B15';
函数onOpen(){
var menuEntries=[{name:“将所选行复制到工作表”,functionName:“copyRowsOnConditionV2”},
];
ss.addMenu(“复制函数”,菜单);//自定义菜单
}
函数copyRowsOnConditionV2(){
var sheetNames=[];//现有工作表名称的数组
var sheets=ss.getSheets();//张数
对于(s=0;s,JavaScript“not”操作符将测试
null
undefined
和空字符串的值,如果发现任何这些条件,则返回
true
。“not”操作符是一个感叹号

if(!data[n][0]){
  Logger.log('tested true for NOT')
  continue;//execute the next loop
}
JavaScript“not”操作符将测试
null
未定义的
和空字符串的值,如果发现任何这些条件,则返回
true
。not”操作符是一个感叹号

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

    if (data[n][0]) {

     // do something;


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

请使用

    if (data[n][0]) {

     // do something;


     }

在“if”运算符中,如果值为null、未定义或空字符串,则括号之间的语句将计算为“false”.

这对我来说很有帮助!感谢您查看我的代码并提供解决方案。这是我的荣幸。只要小心使用带有数字的“if”语句-在JavaScript中,它将0计算为“false”,这有点违反直觉。但是对于字符串,这将起作用。这对我来说很有帮助!感谢您的关注在我的代码中,提供一个解决方案。这是我的荣幸。只要小心使用带有数字的“if”语句-在JavaScript中,它将0计算为“false”,这有点违反直觉。对于字符串,这将起到作用。