我使用下面的过滤功能将数据从一张纸复制到另一张,过滤掉它,这样只有当列AE = TRUE时它才会复制数据。 当我使用这个脚本时,它给了我错误: ' TypeError:无法调用方法" getRange"为null。 (第9行,文件"代码")' 请任何人可以帮忙吗? 我是谷歌脚本的新手,我不确定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:无法读取属性&#34;长度&#34;来自undefined。 (第15行,文件&#34;代码&#34;)
答案 0 :(得分:1)
这意味着tss.getSheetByName('Zones >20 Riders');
没有返回任何内容。在尝试访问之前,您需要检查确实找到了一张纸。
以下是Google Docs提供的示例:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Expenses");
if (sheet != null) {
// Do your thing
}
答案 1 :(得分: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返回此范围所属的工作表。 如果这对你有用,请打勾回答。