GApps脚本将工作表DataValidation发送到字符串数组

时间:2018-10-30 21:02:15

标签: multidimensional-array google-apps-script google-sheets

我正在尝试创建一个将DataValidation转换为2D字符串数组的GApps脚本,以便可以使用CacheService对其进行缓存,然后将其重新转换为DataValidation,以节省时间并提高效率。到目前为止,我已经找到了一种方法,我认为是获取重新创建DataValidation所必需的所有相关信息,但是我不确定如何在重新创建DataValidation的同时避免由于GApps脚本系统的时间限制而使用getDataValidations。下面的脚本收集CriteriaValuesCriteriaType并将它们发送到字符串数组中的值,然后将它们作为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));
}

0 个答案:

没有答案