【发布时间】:2019-04-14 14:19:06
【问题描述】:
我正在使用 Google 表格并尝试设置一个 Apps 脚本宏
- 在工作表“Sheet1”中查找“A”列中值为“True”的行
- 复制此行并将其粘贴到工作表“Sheet2”中最后一个填充行下方的行中
- 删除“Sheet1”中的行
我一直在尝试论坛上另一篇帖子的代码,但我不断收到:TypeError:无法从未定义中读取属性“长度”。 (第 20 行,文件“代码”)
任何帮助将不胜感激
function copyrange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1"); //source sheet
var testrange = sheet.getRange("A2:AE990");
var testvalue = (testrange.getValues());
var csh = ss.getSheetByName("Sheet2"); //destination sheet
var data = [];
var j =[];
//Condition check in G:G; If true copy the same row to data array
for (i=0; i<testvalue.length;i++) {
if ( testvalue[i] == "TRUE") {
data.push.apply(data,sheet.getRange(i+1,1,1,11).getValues());
//Copy matched ROW numbers to j
j.push(i);
}
}
//Copy data array to destination sheet
csh.getRange(csh.getLastRow()+1,1,data.length,data[0].length).setValues(data);
//Delete matched rows in source sheet
for (i=0;i<j.length;i++){
var k = j[i]+1;
sheet.deleteRow(k);
//Alter j to account for deleted rows
if (!(i == j.length-1)) {
j[i+1] = j[i+1]-i-1;
}
}
}
【问题讨论】:
-
"真" !== "真"
-
@TheMaster 谢谢!我用“true”替换了“TRUE”,但我仍然无法让它工作。也许我错过了一些东西,例如上述函数是否在 A 行中查找“True”变量?
-
“真”!==“真”。你能展示一下 A:A 的截图吗?
-
imgur.com/a/fVRCQPJ - 给你答:答 - 感谢您花时间看这个!
-
看起来像布尔值而不是字符串。另外,它是一个二维数组,您需要添加一个
[0]。所以,试试if ( testvalue[i][0] ){...}或if ( testvalue[i][0] == "True") {或if ( testvalue[i][0].toString() == "TRUE") {
标签: google-apps-script google-sheets