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