![](/img/trans.png)
[英]How can I sort a nested array representing different data sets in google apps script?
[英]Sets and data structures in Google Apps Script
Google Sheets 的腳本編輯器似乎是 JavaScript 的變體,但我不知道如何使用它來處理 Sets、字典等。我已經知道如何使用 JS 數組,但數組不足以完成我的任務。
通過正常方式聲明一個集合(即var categoryOptions = new Set(String);
給我一個“未定義集合”錯誤。
使用var categoryOptions = {};
不允許我使用任何內置的 Set 函數,例如add
。 相反,我得到:“TypeError:在對象 [object Object] 中找不到函數添加。”
任何專業提示?
AppScript 運行時概述中的一些新聞https://developers.google.com/apps-script/guides/v8-runtime
從歷史上看,Apps Script 一直由 Mozilla 的 Rhino JavaScript 解釋器提供支持。 雖然 Rhino 為 Apps Script 提供了一種方便的方式來執行開發者腳本,但它也將 Apps Script 綁定到特定的 JavaScript 版本(ES5)。 Apps 腳本開發人員無法在使用 Rhino 運行時的腳本中使用更現代的 JavaScript 語法和功能。
為了解決這個問題,現在支持 Chrome 和 Node.js 的V8 運行時支持 Apps 腳本。 您可以將現有腳本遷移到 V8 以利用現代 JavaScript 語法和功能。
看起來 Apps Script 正在 Rhino 1.7r3 上運行。 這是關於支持和不支持的內容的文章。
http://ramblings.mcpher.com/Home/excelquirks/gassnips/rhinoversion
雖然 Appscript 本身仍然遠遠落后於 ES 時代,但使用 Google 維護的 Clasp 工具確實可以讓您現在以官方支持的方式使用 Typescript 開發應用程序腳本,這將允許您使用Set()
和所有其他語言功能。
https://github.com/google/clasp/blob/master/docs/typescript.md
請注意這里的大限制,一旦您轉向使用 Typescript,您將無法再在應用腳本腳本編輯器中開發/調試您的代碼,因為您將查看轉譯的代碼。
同樣,也有非谷歌項目使用 webpack 和 babel 從 ESx 轉換為 appscript 代碼。
嘗試使用此代碼:
function test() {
let search_from_data = ['a', 'b', 'c', 1, 2];
let search_data = ['c', 'a', 'd', 'z', 2, 3, 4, 5];
let search_set = new Set();
for ( let i = 0 ; i < search_from_data.length ; i++ )
search_set.add(search_from_data[i]);
for ( let i = 0 ; i < search_data.length ; i++)
Logger.log([search_data[i], "Is present?", search_set.has(search_data[i])]);
}
Apps 腳本現在受支持 Chrome 和 Node.js 的 V8 運行時支持。 您可以將現有腳本遷移到 V8 以利用現代 JavaScript 語法和功能。 參考: https ://developers.google.com/apps-script/guides/v8-runtime
這是 Apps Script 的 ES6 shim,因此您可以使用 Set 和 Map 之類的東西。 IDE 當然不支持箭頭函數或任何可能破壞 5.1 語法的東西。
http://ramblings.mcpher.com/Home/excelquirks/gassnips/es6shim
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.