google-apps-script - 下拉脚本滞后
问题描述
我有这个下拉脚本,它根据 G 列中的值创建一个下拉列表。G 列中可以有大约 4 个不同的值,它们应该创建 4 组不同的下拉列表。G 列上的数据来自一个过滤器,该过滤器不断更新新提交,这导致该脚本也非常一致地运行。有时脚本会有点滞后,并在刷新之前将下拉列表留空一分钟左右。你们对如何解决这个问题有什么建议吗?
function DropDowns() {
var app = SpreadsheetApp;
var ss = app.getActiveSpreadsheet();
var draft = ss.getSheetByName("Time Off Action Items");
var option = ss.getSheetByName("Options");
var types = option.getRange(1, 1, 1, option.getLastColumn()).getValues()[0];
var obj = types.reduce(function(o, e, i) {
o[e.toUpperCase()] = option.getRange(2, i + 1, option.getLastRow());
return o;
}, {});
var column = draft.getRange("H3:H" + draft.getLastRow());
var Bcolumn = draft.getRange("G3:G" + draft.getLastRow());
var rules = Bcolumn.getValues().map(function(e) {
return e[0].toUpperCase() in obj ? [app.newDataValidation().requireValueInRange(obj[e[0].toUpperCase()]).build()] : [null]
});
column.setDataValidations(rules);
Logger.log(types)
}
解决方案
根据你的说法
G 列中大约有 4 个不同的值,它们应该创建 4 组不同的下拉列表。
我能想到一个小的优化
根据该值,您可以使用已知值填充下拉列表,然后调用获取选项,这也将为我们提供新选项。然后,一旦我们有了选项,我们就可以更新验证选项。
这样延迟会更小。
推荐阅读
- ios - 将一个印地语数字转换为阿拉伯语数字
- java - Spring Cloud Gateway Redis 限速数据库条目
- php - 前/后输入显示结果
- react-admin - 单个页面上有两个不同的 List 组件
- stm32 - STM32 SAI:了解FIFO
- bash - 为什么当通过管道传输到其他命令时 docker 伪 tty 会破坏输出?
- dart - 如何在文本下添加按钮
- excel - ALV 网格仅加载前 64 行,如何更改默认加载
- google-maps - Clojurescript - 无法限制到 Google Places Autocomplete API 中的城市
- machine-learning - 如何训练用于提取值的对话流可能不会被空间分割