将脚本配置存储在哪里



我正在寻找一种基于的最佳方式来组织我的代码配置(代码的评估方式:架构(

  • 速度
  • 能见度
  • 代码行
  • 低耦合
  • 维护工作

您能提供满足一个或多个轴的良好模式(几个(吗?

例如,我们都创建了如下代码:

var spread = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spread.getSheetByName("Sheet1");

但是,如果工作表的名称发生更改,我们必须在代码中的每个位置更新它。

我毫不怀疑,我们可以极大地改进脚本在一起的表达方式。作为迄今为止我发现的最好的个人方法,它是创建一个工作表调用"配置";并将里面的所有值设置为Named Range。然后脚本有一个init部分,通过管道将正确命名的范围发送到变量。

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var ranges = sheet.getNamedRanges();
if (ranges === null || ranges === "") throw ErrorMessage(`Named Range allowing to initialise project are not set for the sheet ${sheet.getName()}`)
var ROOT_DRIVE_ID;
var SHEET_NAME
for (var i = 0; i < ranges.length; i++) {
switch (ranges[i].getName()) {
case "ROOT_DRIVE_ID": ROOT_DRIVE_ID = ranges[i].getRange().getValue(); break; 
case "SHEET_NAME" : SHEET_NAME = ranges[i].getRange().getValue(); break
}
}

一次又一次地触摸工作表,就像脚本正在做的那样,会大大降低脚本的速度。您可以将配置存储在中

  • 全局对象:
const CONFIG={
ROOT_DRIVE_ID : "",
SHEET_NAME : ""
}

这在读取和写入方面都更快,易于手动配置,但不能从工作表进行配置。

  • 缓存服务:

这也更快,但手动配置也不容易。缓存有一个过期时间。

  • 属性服务:

这也更快。手动配置也很容易

参考文献:

  • ";最佳实践";

  • 由于getValue和单元格插入可能导致处理时间过长

如果您有大型数据集,通常值得花时间来检查使用Sheets API与SpreadsheetApp的区别。这不一定总是真的,在我看来SpreadsheetApp更容易使用。

阅读最佳实践

相关内容

  • 没有找到相关文章

最新更新