2014-02-11 69 views
0

我有一个关于“onEdit”触发器运行以下脚本(部分工作得很好)数据验证代码(谷歌表)

function onEdit() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var myRange = SpreadsheetApp.getActiveRange(); 

    if(sheet.getName() == "Plan" && myRange.getColumn() == 2 && myRange.getRow() > 3){ 
    var option = new Array(); 
    option[0]="0"; 
    option[1]="1"; 
    option[2]="2"; 
    var dv = sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).getValidation(); 
    dv.setAllowInvalidData(false); 
    dv.setHelpText("Some help text here"); 
    dv.setCriteria(SpreadsheetApp.DataValidationCriteria.ITEM_IN_LIST,true,option); 
    sheet.getRange(myRange.getRow(),myRange.getColumn() + 1) .setValidation(dv); 
    } 
} 

大部分的代码从答案来到this题。问题是,

dv.setCriteria(SpreadsheetApp.DataValidationCriteria.ITEM_IN_LIST,true,option); 

行代码不起作用,编译器甚至不会让我保存它。在我看到为什么时,Google似乎已经改变了它的处理方式,并将它的文档记录为离线。任何人都可以帮助我做到这一点?

回答

1

是的,似乎什么改变......

尝试:

function onEdit() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var myRange = SpreadsheetApp.getActiveRange(); 

    if(sheet.getName() == "Plan" && myRange.getColumn() == 2 && myRange.getRow() > 3){ 
    var option = new Array(); 
    option[0]="0"; 
    option[1]="1"; 
    option[2]="2"; 
    // var dv = sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).getValidation(); 
    var dv = sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).getDataValidation(); 
    var dv = SpreadsheetApp.newDataValidation(); 
    // dv.setAllowInvalidData(false); 
    dv.setAllowInvalid(false); 
    dv.setHelpText("Some help text here"); 
    dv.requireValueInList(option, true); 
// dv.setCriteria(SpreadsheetApp.DataValidationCriteria.ITEM_IN_LIST,true,option); 
// sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).setValidation(dv); 
    sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).setDataValidation(dv.build()); 
    } 
} 
+0

工作就像一个魅力!你是否刚刚知道这一点,或者在某个我没有看到的地方找到一些文档?谢谢! – tarheel

+0

嗯,我已经做了这样的事情,但我并没有真正记得我是如何做到的,所以我把你的代码放在GAS编辑器中,并用自动补全功能玩了一下:D – Harold