Google apps script 将多行复制并粘贴到另一张图纸上的下一个空行中
我有以下脚本:Google apps script 将多行复制并粘贴到另一张图纸上的下一个空行中,google-apps-script,copy,multiple-columns,rows,Google Apps Script,Copy,Multiple Columns,Rows,我有以下脚本: function onEdit(event) { // assumes source data in sheet named Needed // target sheet of move to named Acquired // test column with yes/no is col 5 or E var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = event.source.getActiveS
function onEdit(event) {
// assumes source data in sheet named Needed
// target sheet of move to named Acquired
// test column with yes/no is col 5 or E
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "IN" && r.getColumn() == 7 && r.getValue() == "Y") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("ORDERS");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
}
}
这是我找到脚本的原始帖子:
我想对代码做一些小的调整,但不知道从哪里开始
目前,当在G列中输入“Y”时,它复制整行,并将行内容放在ORDERS!的最后一行
我想让它做的是:
1) 仅复制订单最后一行上的B、C和E列!
2) 在中删除E和F中的值!在为该特定行运行代码之后(不希望它删除我没有对其添加“Y”的行)
3) 是否有一种方法可以替代按钮,即当单击按钮时,它会一次复制所有带有“Y”的行
如果您想玩游戏,这里有一个指向我的工作表的链接:
致意
曼奇我相信你的目标如下
- 当列“G”为
时,您希望将列“B”、“C”和“E”的值复制到图纸的最后一行Y
。顺序
- 您希望在运行脚本时复制列“G”为
的所有行Y
- 您希望在运行脚本时复制列“G”为
- 运行脚本时,您希望删除中的
工作表中复制行的“E”列和“F”列的内容
- 您希望通过单击工作表上的按钮来运行脚本
- 在你的剧本里,
- 通过单击工作表上的按钮运行脚本时,无法使用事件对象
- 脚本复制活动范围的一行
- 复制行的列“E”和“F”不会被删除
run
分配给该按钮。这样,当单击按钮时,脚本将运行。并且将列“G”为Y
的所有行的列“B”、“C”和“E”从工作表“IN”复制到工作表“ORDERS”的最后一行
注:
- 关于运行GoogleApps脚本的按钮,我认为这个站点很有用。在您的情况下,请在工作表“In”上创建一个按钮,并将功能
分配给该按钮。这样,当单击按钮时,脚本工作run
- 请将此脚本与V8一起使用
任何值运行脚本时,如何修改为if(g!=”){
?
function run() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var srcSheet = ss.getSheetByName("IN");
var dstSheet = ss.getSheetByName("ORDERS");
// 1. Retrieve the values from "A2:G" of sheet "IN".
var srcValues = srcSheet.getRange("A2:G" + srcSheet.getLastRow()).getValues();
// 2. Create an object for putting values and deleting the contents of the columns "E" and "F".
var obj = srcValues.reduce((o, [,b,c,,e,,g], i) => {
if (g == "Y") {
o.values.push([b, c, e]);
o.ranges.push(`E${i + 2}:F${i + 2}`);
}
return o;
}, {values: [], ranges: []});
// 3. Copy the values to the sheet "ORDERS".
dstSheet.getRange(dstSheet.getLastRow() + 1, 1, obj.values.length, obj.values[0].length).setValues(obj.values);
// 4. Delete the contents of the columns "E" and "F" of sheet "IN".
srcSheet.getRangeList(obj.ranges).clearContent();
}