![](/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.