我正在尋找一種方法來以最佳方式組織我的代碼配置(代碼是如何表達的:架構),基于:
- 速度
- 能見度
- 代碼行
- 低耦合
- 維護作業
- ...
你能提供好的模式(幾個)來滿足一個或幾個軸嗎?
例如,我們都創建了如下代碼:
var spread = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spread.getSheetByName("Sheet1");
但是,如果作業表的名稱發生變化,我們必須在代碼中的每個位置更新它。
我毫不懷疑,我們可以極大地改善腳本的表達方式。作為迄今為止我發現的最好的個人方法,它是創建一個名為“配置”的作業表并將里面的所有值設定為命名范圍。然后腳本有一個初始化部分來將正確的命名范圍傳遞給變數。
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
}
}
uj5u.com熱心網友回復:
一次又一次地觸摸作業表,就像腳本正在做的那樣,會大大減慢你的腳本。您可以將配置存盤在
- 全域物件:
const CONFIG={
ROOT_DRIVE_ID : "",
SHEET_NAME : ""
}
這在讀取和寫入方面都更快,易于手動配置,但不是從作業表中配置。
- 快取服務:
這也更快,但也不容易手動配置。并且快取有過期時間。
- 物業服務:
這也更快。手動配置也很容易
參考:
“最佳實踐”的標簽資訊頁面
由于 getValue 和單元格插入,處理時間可能較長
uj5u.com熱心網友回復:
如果您有大型資料集,通常值得您花時間檢查一下使用 Sheets API 與 SpreadsheetApp 的區別。這不一定總是正確的,在我看來,SpreadsheetApp 更容易使用。
閱讀最佳實踐
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/516186.html
上一篇:當字串中有重復字母時獲取匹配
