这个问题最近出现~2022年8月25日。
\n我的onEdit触发器依赖于工作表名称,并且脚本运行时间太长而无法获取它。这是在我的环境中重现错误的最小脚本:
function onEdit(e) {\n var t = new Date();\n console.log(\'we are in onEdit!\');\n var sheetName = e.range.getSheet().getName();\n console.log(sheetName);\n console.log(\'We got sheet name. Time past = \' + (new Date() - t));\n}\nRun Code Online (Sandbox Code Playgroud)\n该函数range.getName()运行速度太慢,并且脚本超时。
我以前从未见过这种行为。其他样本:SpreadsheetApp. 在我的另一个文件中,这一行需要 30 秒:
SpreadsheetApp.openById(id);
这是重现错误所需的最少代码的文件:
\nonEdit 崩溃测试 \xe2\x9e\xa1\xef\xb8\x8f e.range.getSheet().getName()
\n请复印一份。
\n重现onEdit错误
performance triggers google-sheets google-apps-script google-sheets-formula
今天是个好日子!
我想intersect在Google表格脚本中使用与VBA类似的功能.有一个很好的方法来做到这一点?该函数必须返回:
RangeIntersect(R1, R2) = true 如果R1与R2有共同的细胞,RangeIntersect(R1, R2) = false 如果R1没有与R2共同的单元格先感谢您.
速度测试
我希望功能尽可能快地运行.那是因为它将在onEdit函数内部的循环中使用.如果您愿意,可以使用此脚本测试提供的功能:
function speedtest () {
var sheet;
sheet = SpreadsheetApp.getActiveSheet();
var rr1 = ['A1:C16', 'B2:B88', 'D1:D8', 'E1:E17', 'A18:B51', 'A13:A14', 'A17:C17'];
var r1, r2;
r1 = sheet.getRange(rr1[0]);
var rr2 = [];
// define some ranges
for (var x = 0; x < 30; x++) {
for (var i = 0; i < rr1.length; i++) {
r2 = sheet.getRange(rr1[i]);
rr2.push(r2);
}
} …Run Code Online (Sandbox Code Playgroud) 我有一个二维数组,它实际上是输入到 Google Sheet 中的数据。它按逻辑排序,由用户定义。
目标是在此表的末尾输入新行,然后按位置对其进行排序。

说“按位置”我的意思是“欧洲”在“美国”之前,因为用户已经输入了它。
这是用于测试的示例数组:
var data =
[
['Earth', 'Europe', 'Britain', 'London'],
['Earth', 'Europe', 'Britain', 'Manchester'],
['Earth', 'Europe', 'Britain', 'Liverpool'],
['Earth', 'Europe', 'France', 'Paris'],
['Earth', 'Europe', 'France', 'Lion'],
['Earth', 'Europe', 'Italy', 'Rome'],
['Earth', 'Europe', 'Italy', 'Milan'],
['Earth', 'Europe', 'Greece', 'Athenes'],
['Earth', 'Asia', 'China', 'Pekin'],
['Earth', 'Africa', 'Algeria', 'Algiers'],
['Earth', 'America', 'USA', 'Dallas'],
['Earth', 'America', 'USA', 'New York'],
['Earth', 'America', 'USA', 'Chicago'],
['Tatooine', 'Yulab', 'Putesh', 'ASU'],
['Tatooine', 'Yulab', 'Putesh', 'Niatirb'],
['Tatooine', 'Yulab', 'Zalip', 'Duantan'],
['Tatooine', 'Asia', 'Solo', …Run Code Online (Sandbox Code Playgroud) javascript sorting grouping google-sheets google-apps-script
我有日期和值的列表:
01.01.2016 100
01.02.2017 200
01.03.2017 300
Run Code Online (Sandbox Code Playgroud)
我想要的是现在如果2017年是数值.结果:200 + 300 = 500
这是我试过的公式:
=SUMIF($F5:$F,"<="&$A2,AF5:AF)
Run Code Online (Sandbox Code Playgroud)
问题是谷歌表无法比较日期和年份.当我将日期从2017年2月1日更改为2017年时,它可以正常工作.
如果我试图获得日期的年份它不起作用:
=SUMIF(YEAR($F5:$F),"="&$A2,AF5:AF)
Run Code Online (Sandbox Code Playgroud)
如何比较一年的日期?或者还有其他方式吗?
谢谢!
[
{
"id":100,
"account_id":8,
"name":"Out of Service",
"default":false,
"created_at":"2012-02-06T08:51:29.720-06:00",
"updated_at":"2012-02-06T08:51:29.720-06:00"
},
...
]Run Code Online (Sandbox Code Playgroud)
这是我的示例对象。我是从url提取应用程序请求中获得的。我该如何过滤它,以便我可以仅发布一种类型的Value的列表。
例如:如果我想将其作为键ID进行过滤,我想得到一个类似于:100,101,...的列表。
谢谢
javascript ×3
arrays ×1
grouping ×1
json ×1
performance ×1
sorting ×1
spreadsheet ×1
triggers ×1