我有一个电子表格,其中包含要在活动前 60、30 和 1 天填写的清单。这些工作表被称为“60 天”、“30 天”和“启动”。我正在尝试将未选中的行自动添加到下一张表中(因此“60 天”上的任何未选中行都将附加到“30 天”,并从“30 天”附加到“kickoff”——另外,“checked off”是指在一个单元格中输入了一个“x”)。我在代码上有一个很好的开始,但我一定是做错了什么——因为它似乎没有做任何事情(请原谅我对 javascript 的无知,我上周开始使用 codecademy 和大量浏览进行编码在这些论坛上)。我觉得我有一些非常基本的东西 我可能失踪了,我会欢迎我能得到的任何帮助。这就是我所拥有的...
function onEdit() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getActiveCell();
var i = 4;//have this number be your first row of data
if(r.getColumn()===5){ // this indicates the column that, if left blank, will mean the row should be copied to the next sheet
if (ss.getActiveSheet().getName()=="60-Day"){
var source_sheet = ss.getSheetByName("60-Day");
var target_sheet = ss.getSheetByName("30-Day");
var last_row = target_sheet.getLastRow();
while(i<=last_row){
if(source_sheet.getValue("E"+i)!="x"){
var source_range = source_sheet.getRange(i,2,1,6); // indicate the columns you'd like to copy
var target_range = target_sheet.getRange(last_row + 1,2,1,6); // indicate the columns where you'd like to paste
source_range.copyTo(target_range);
i++;
SpreadsheetApp.flush();
}else{
i++;
}
}
};
else if (ss.getActiveSheet().getName()=="30-Day"){
var source_sheet = ss.getSheetByName("30-Day");
var target_sheet = ss.getSheetByName("Kickoff");
var last_row = target_sheet.getLastRow();
while(i<=last_row){
if(ss.getValue("E"+i)!="x"){
var source_range = source_sheet.getRange(i,2,1,6);//indicate the columns you'd like to copy
var target_range = target_sheet.getRange(last_row + 1,2,1,6);//indicate the columns where you'd like to paste
source_range.copyTo(target_range);
i++;
SpreadsheetApp.flush();
}else{
i++;
}
};
}
}
}
就是这样——不过,这就是我遇到更多麻烦的地方。如果一行已被推送到目标工作表并在目标工作表上被选中,我希望它从目标工作表中消失,并且我希望源工作表中的原始行现在显示它已经勾选。此外,如果在源工作表上选中了以前的空白行,我希望已推送到目标工作表的副本消失。这是我开始迷路的地方。我将如何实施呢?