完全公开:我的编程经验为零,但我的研究很快。
我正在尝试能够从许多不同的工作表中复制单个行,以将其复制到一个特定的工作表中。我花了一些时间在这个(很棒的)网站上查看以前的问题/答案,并且我能够拼凑出一个脚本,该脚本似乎可以满足我的需求。
我可以看到我可以/应该在脚本中的什么位置进行更改以获取所需的功能,但是我不知道要在代码中添加什么以实际执行我希望执行的操作。我来到这个社区谦虚地寻求帮助/指导。
这是我拼凑而成的脚本,a link to the example I've been working with:
function onEdit(event) {
// assumes source data in sheet named ABC
// target sheet of copy to named Interdisciplinary
// getColumn with check-boxes is currently set to colu 15 or O
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "ABC" && r.getColumn() == 15 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Interdisciplinary");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
} else if(s.getName() == "Interdisciplinary" && r.getColumn() == 4 && r.getValue() == false) {
}
}
我知道我正在确定要从(ABC)中提取数据的特定工作表,我可以从那里单击复选框的工作表中提取什么?
我还知道我正在将行复制到远离LastRow的某个已定义位置的行。我应该怎么做才能将行复制到学期标题中,或者复制到新表的顶部?
最后,我非常感谢社区可能对我的要求提供的其他任何评论,反馈和指导。
非常感谢! 钾
答案 0 :(得分:1)
您的代码有效。问题在于电子表格中的代码正在查看第21列,而不是第15列。
此外,我建议您在event object中查看可用的属性。您应该使用它们而不是您编写的前三个声明。您可以在下面查看我的版本中的更改。
function onEdit(event) {
var sheets = ["ABC", "DEF", "GHI", "JKL", "MNO"]; // Sheet names that will trigger execution. Case-sensitive.
// target sheet of copy to named Interdisciplinary
// getColumn with check-boxes is currently set to colu 15 or O
var ss = event.source;
var s = event.range.getSheet();
var r = event.range;
if (sheets.indexOf(s.getName()) != -1 && r.getColumn() == 15 && r.getValue() == true) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Interdisciplinary");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
} else if(s.getName() == "Interdisciplinary" && r.getColumn() == 4 && r.getValue() == false) {
}
}
编辑:我已经修改了代码,以向您展示如何允许从多个工作表中触发。