简体   繁体   中英

Data Validation in code (Google Sheets)

I have the following script that runs on the 'onEdit' trigger (that part is working just fine)

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); 
  }
}

That most of the code came from the answer on this question. Problem is that the

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

line of code doesn't work, the compiler won't even let me save it. In my looking around as to why, it seems Google has changed how it is handled, and taken their docs about it offline. Can anyone help me get this working?

yep it seems something changed...

try that:

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()); 
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM