我有以下脚本:
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);
}
}
这是我在其中找到脚本的原始帖子:https://support.google.com/docs/forum/AAAABuH1jm0hR40qh02UWE/?hl=en&gpf=%23!topic%2Fdocs%2FhR40qh02UWE
我想对代码进行一些小的调整,但不知道从哪里开始。
当前,当在列G中输入“ Y”时,它将复制整个行,并将行内容放在ORDERS!的最后一行!
我想要它做的是:
1)仅复制ORDERS的最后一行上的B,C和E列!2)删除IN上E和F中的值!在为该特定行运行了代码之后(不希望它删除我没有输入“ Y”的行)3)是否可以使用按钮来代替,即单击按钮时,它会一次复制所有带有“ Y”的行?
如果您想玩耍,这里是我的工作表的链接:https://docs.google.com/spreadsheets/d/1Peo5_5QmkxVyL7j5bmgtMs9BL16cvsGhhOSuRV_TsAo/edit?usp=sharing
最好的问候manc
我相信您的目标如下。
Y
时,您要将列“ B”,“ C”和“ E”的值复制到工作表ORDERS
的最后一行。Y
的所有行。IN
表中已复制行的列“ E”和“ F”的内容。为此,这个答案如何?
需要修改以上修改点。当以上几点反映到脚本中时,它将变为以下内容。
请复制以下脚本并将其粘贴到脚本编辑器中。并且请准备一个绘图和/或图像按钮,并将功能run
分配给该按钮。这样,当单击按钮时,脚本将运行。并将列“ G”为Y
的所有行的列“ B”,“ C”和“ E”从工作表“ IN”复制到工作表“ ORDERS”的最后一行。
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();
}
run
分配给该按钮。这样,当单击按钮时,脚本将起作用。