我正在处理一些代码,这些代码将采用预定义范围并将数据复制到与A列中名称相同的工作表。我遇到的问题是,如果A列有一个空白单元格,这是必需的,然后我收到一个错误,它报告说“无法调用方法”getRange“为null”。如果该单元格中有数据,那么它可以正常工作。
我尝试过的一些事情包括过滤范围,但是,即使隐藏了代码,代码仍会读取范围。我也试过写一个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(data[n][0].length=0){
//do nothing
}
else if(data[n][0].length<1){
//do something
}
答案 0 :(得分:1)
答案 1 :(得分:1)
只需使用
if (data[n][0]) {
// do something;
}
在&#39; if&#39;运算符,括号之间的语句将被评估为&#39; false&#39;如果值为null,undefined或空字符串&#34;&#34;。