【发布时间】: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