审核个人代码

时间:2015-11-20 15:32:47

标签: google-apps-script

我找到了这段代码并将其实现到我的电子表格中。我的问题是代码覆盖了我在空列表中的一些数据验证。我希望保留下拉菜单,因为我希望用户尽可能轻松地使用它。我想我可以添加下面的行(见**之间的文字)

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课程。他们真的没有帮助我很多。对不起,我的口气让我非常恼火。谢谢你的帮助。享受周末!

1 个答案:

答案 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)

相关问题