Google Sheet Apps脚本:如何编辑下面的Apps脚本,以便仅将数据从A列复制到L列并将P列复制到S列? [英] Google Sheet Apps Script: How do I edit the Apps Script below to only copy over data from Column A to L and P to S?
问题描述
如何编辑下面的Apps脚本,以仅将数据从A列复制到L列并将P数据复制到S列? (基本上,我希望它跳过M,N,O列以及S之后的所有列.
How do I edit the Apps Script below to only copy over data from Column A to L and P to S? (Basically, I want it to skip Column M, N, O and all the columns after S.
function onEdit(event) {
// assumes source data in sheet named Tab 1
// target sheet of move to named Tab 2
// test column with yes/no is col 20 or T
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Tab 1" && r.getColumn() == 20 && r.getValue() == "yes") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Tab 2");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
}
预先感谢您, 最好的祝福, 罗伯特
Thank you in advance, Best regards, Robert
推荐答案
将两个范围(A-L
,P-S
)分别复制到不同的目标范围,如下所示:
Copy both ranges (A-L
, P-S
) separately to the different target ranges, as shown here:
function onEdit(e) {
//e.source.toast("Entry");
//console.log(JSON.stringify(e));
const sh=e.range.getSheet();
if(sh.getName()=="Sheet1" && e.range.columnStart==20 && e.value=="TRUE") {
const tsh=e.source.getSheetByName('Sheet2');
const nr=tsh.getLastRow()+1;
sh.getRange(e.range.rowStart,1,1,12).moveTo(tsh.getRange(nr,1,1,12));
sh.getRange(e.range.rowStart,16,1,4).moveTo(tsh.getRange(nr,16,1,4));
sh.deleteRow(e.range.rowStart);
}
}
注意:我使用了"Sheet1"和"Sheet2",并且还对复选框使用了标准值,而不是"yes"和"no".我还使用了"e"而不是"event",并且使用了事件对象中可用的数据.
Note: I used 'Sheet1' and 'Sheet2' and I also used standard values for check boxes instead of 'yes' and 'no'. I also used 'e' instead of 'event' and I used the data that is available in the event object.
这篇关于Google Sheet Apps脚本:如何编辑下面的Apps脚本,以便仅将数据从A列复制到L列并将P列复制到S列?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!