我正在尝试创建一个将DataValidation
转换为2D字符串数组的GApps脚本,以便可以使用CacheService
对其进行缓存,然后将其重新转换为DataValidation
,以节省时间并提高效率。到目前为止,我已经找到了一种方法,我认为是获取重新创建DataValidation
所必需的所有相关信息,但是我不确定如何在重新创建DataValidation
的同时避免由于GApps脚本系统的时间限制而使用getDataValidations
。下面的脚本收集CriteriaValues
和CriteriaType
并将它们发送到字符串数组中的值,然后将它们作为JSON字符串缓存在值data_eval_arr_cached
下。
var rules = template_data.getDataValidations()[0]; //takes 10 seconds
if (rules != null){
var rules_array = [ ];
var x = 0;
for each (var data_eval in rules){
if (data_eval != null){
rules_array[x] = [ ];
var y = 0;
for each(var arg in data_eval.getCriteriaValues()){
if (arg == "Range"){
rules_array[x][y] = arg.getA1Notation();
} else {
rules_array[x][y] = arg;
}
y++;
}
rules_array[x][y] = data_eval.getCriteriaType().toString();
} else {
rules_array[x] = null;
}
x++;
}
}
data_eval_arr = JSON.parse(JSON.stringify(rules_array));
cache.put("data_eval_arr_cached", JSON.stringify(rules_array));
}