我找到了这段代码并将其实现到我的电子表格中。我的问题是代码覆盖了我在空列表中的一些数据验证。我希望保留下拉菜单,因为我希望用户尽可能轻松地使用它。我想我可以添加下面的行(见**之间的文字)
function onEdit(event) {
// assumes source data in sheet named Masterlist
// target sheet of move to named Actionlist
// test column with yes/no is col 13 or M;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(s.getName() == "Masterliste"
&& r.getColumn() == 13 && r.getValue() == "Ja") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Actionlist");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
// **
var cellrange = SpreadsheetApp.getActive().getRange(target);
var range = SpreadsheetApp.getSheetByName("Dropdown").getRange('A16:B18'); //This is the range for the dropdown I want to hand over.
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
cell.setDataValidation(rule); //Include a data validation menu in each line automatically
// **
s.getRange(row, 1, 1, numColumns).copyTo(target); //This executes the copy order with the data provided before
}
}
我知道这对你们中的一些人来说可能很容易,但我刚刚开始使用谷歌4个月前,这让我发疯了。我熟悉excel和VBA,但根本不熟悉Java。 是的我已经完成了codeacademy课程。他们真的没有帮助我很多。对不起,我的口气让我非常恼火。谢谢你的帮助。享受周末!
答案 0 :(得分:0)
您需要为copyTo添加一个选项。这是看起来像:
s.getRange(row, 1, 1, numColumns).copyTo(target, {contentsOnly:true});
或者您可以使用:copyValuesToRange(sheet, column, columnEnd, row, rowEnd)
https://developers.google.com/apps-script/reference/spreadsheet/range#copyTo(Range,Object)