Google apps script 电子表格:动态更改数据验证
我试图更改某个范围的数据验证,我花了很多时间来了解如何满足“列表中的值”标准 以下是如何:Google apps script 电子表格:动态更改数据验证,google-apps-script,Google Apps Script,我试图更改某个范围的数据验证,我花了很多时间来了解如何满足“列表中的值”标准 以下是如何: function getClientsId(e) { Logger.clear(); var currentSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = currentSpreadsheet.getSheetByName("data"); var rows = sheet.getDataRa
function getClientsId(e) {
Logger.clear();
var currentSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = currentSpreadsheet.getSheetByName("data");
var rows = sheet.getDataRange();
var numRows = rows.getNumRows();
var values = rows.getValues();
var myValues = new Array();
var myKey ;
// Get all values
for (var i = 0; i <= numRows - 1; i++) {
var row = values[i];
myKey = row[1]
myValues[myKey ] = myKey;
}
// Update the list
var reportSheet = currentSpreadsheet.getSheetByName("report");
var clientRange = reportSheet.getRange("aRange");
// My main problem was the second param of 'withCriteria' function. NOTE THAT'S AN ARRAY !!!!
var rule = SpreadsheetApp.newDataValidation().withCriteria(SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST, [Object.keys(clientsId),true]).build();
clientRange.setDataValidation(rule);
/*
// Here the code if you have many rules...
var rules = clientRange.getDataValidations();
for (var i = 0; i < rules.length; i++) {
for (var j = 0; j < rules[i].length; j++) {
var rule = rules[i][j];
if (rule != null) {
rules[i][j] = rule.copy().withCriteria(SpreadsheetApp.DataValidationCriteria.VALUE_IN_LIST, [Object.keys(myValues),true]).build();
}
}
}
clientRange.setDataValidations(rules);*/
}
函数getClientsId(e){
Logger.clear();
var currentSpreadsheet=SpreadsheetApp.getActiveSpreadsheet();
var sheet=currentSpreadsheet.getSheetByName(“数据”);
var rows=sheet.getDataRange();
var numRows=rows.getNumRows();
var values=rows.getValues();
var myValues=新数组();
var-myKey;
//获取所有值
对于(var i=0;i