2014-02-11 87 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