首页 文章

TypeError:无法调用null的方法“getRange” . (第9行,文件“代码”)

提问于
浏览
-2

我使用下面的过滤器功能将数据从一个工作表复制到另一个工作表,过滤掉,以便它只在列AE = TRUE时复制数据 . 当我使用这个脚本时,它给了我错误:'TypeError:无法调用方法“getRange”为null . (第9行,文件“代码”)'请任何人都可以帮忙吗?我是Google Script的新手,我不确定getRange部分是什么意思..任何帮助都将非常感谢!

function myFunction() {
var sss = 
SpreadsheetApp.openById('1V3Tl4h43AC92K4gQtvdZ07k01QJOnfwSD1BKKTziHJU'); 
var ss = sss.getSheetByName('<20 Filter'); 
var range = ss.getRange('A:AE'); 
var data = range.getValues();

var tss = 
SpreadsheetApp.openById('1AKL81cN5QWTWSsSfuMGcFRED5QpeAK022k8VwrPl7sA'); 
var ts = tss.getSheetByName('Zones >20 Riders'); 
ts.getRange(ts.getLastRow()+1, 1, data.length, 
data[0].length).setValues(data);

var range = ts.getRange(ts.getLastRow()+1, 1, data.length, 
data[0].length)
var rawData = range.getValues()     // get value from spreadsheet 2
var data = []                       // Filtered Data will be stored in this array
for (var i = 0; i< rawData.length ; i++){
if(rawData[i][30] == "TRUE")            
{
data.push(rawData[i])
}
}
}

或者我可以使用这个脚本吗?

function myFunction() {
var sss = SpreadsheetApp.openById('1V3Tl4h43AC92K4gQtvdZ07k01QJOnfwSD1BKKTziHJU'); //replace with source ID
var ss = sss.getSheetByName('<20 Filter'); //replace with source Sheet tab name
var range = ss.getRange('A:AE');      //assign the range you want to copy
var rawData = range.getValues()     // get value from spreadsheet 1
var data = []                       // Filtered Data will be stored in this array
for (var i = 0; i< rawData.length ; i++){
if(rawData[i][30] == "TRUE")           
{
data.push(rawData[i])
}
}
var tss = SpreadsheetApp.openById('1AKL81cN5QWTWSsSfuMGcFRED5QpeAK022k8VwrPl7sA'); //replace with destination ID
var ts = tss.getSheetByName('Zones <20 Riders'); //replace with destination Sheet tab name
ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);

}

但它给了我错误:TypeError:无法从undefined中读取属性“length” . (第15行,文件“代码”)

2 回答

  • 0

    尝试改变如下

    var sss = 
    SpreadsheetApp.openById('1V3Tl4h43AC92K4gQtvdZ07k01QJOnfwSD1BKKTziHJU'); 
    var ss = sss.getSheetByName('<20 Filter'); 
    var sheet = ss.getSheets()[0];
    var range = sheet.getRange('A:AE'); 
    var data = range.getValues();
    

    注意:getSheets返回此范围所属的工作表 . 如果这对您有用,请打勾回答 .

  • 0

    这意味着 tss.getSheetByName('Zones >20 Riders'); 没有返回任何东西 . 在尝试访问之前,您需要检查确实找到了一张纸 .

    以下是Google Docs提供的示例:

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Expenses");
    
    if (sheet != null) {
        // Do your thing
    }
    

    如果您不确定方法的作用,请务必查看文档 . 例如,getRange返回工作表中指定的Range个单元格 .

相关问题