sql - 是否有脚本可以绕过单元格公式的 50000 个字符?

标签 sql google-apps-script google-sheets array-formulas google-sheets-formula

我有这个(非常)长的公式,我需要在 Google 表格中运行,我遇到了限制错误:

There was a problem

Your input contains more than the maximum of 50000 characters in a single cell.

有解决办法吗?


我的公式是:

=ARRAYFORMULA(SPLIT(QUERY({B!A1:A100; ........ ; CA!DZ1:DZ100}, 
 "select * where Col1 is not null order by Col1 asc", 0), " "))

完整公式为:pastebin.com/raw/ZCkZahpw

为 Pastebin 道歉......我在这里也有一些错误:

注意 1: 由于它是一个长公式,因此它的输出大小应为 ~100 行 × 3 列 注意 2: 到目前为止,我设法绕过了 JOIN/TEXTJOIN 50000 多个字符,甚至 500000 个单元格的限制

最佳答案

Is there a script to bypass 50000 characters for in-cell formula?

如果 {B!A1:A100; 的长度…………; CA!DZ1:DZ100} 大于 50,000 个字符考虑构建一个为您构建数组的自定义函数。您可以对引用进行“硬编码”,或将它们列为文本范围内的内容,以供您的脚本读取。

然后,生成的公式可能如下所示:

 =ARRAYFORMULA(SPLIT(QUERY(MYCUSTOMFUNCTION(), 
 "select * where Col1 is not null order by Col1 asc", 0), " "))

或者像这样

 =ARRAYFORMULA(SPLIT(QUERY(MYCUSTOMFUNCTION(A1:A1000), 
 "select * where Col1 is not null order by Col1 asc", 0), " "))

(假设您有 1000 个引用)。

自定义函数之所以有效,是因为它在 Google 表格端而不是具有超出单元格内容限制的公式,它将只使用几个字符,并且因为通过使用良好的做法,可以使它花费的时间少于 30 秒他们的执行限制。

值得注意的是,如果使用 MYCUSTOMFUNCTION() 变体(不带参数),它只会在电子表格打开时重新计算,但 MYCUSTOMFUNCTION(A1:A1000) 每次范围引用中的单元格更改时,都会重新计算变体(以范围引用作为参数)。

引用资料

关于sql - 是否有脚本可以绕过单元格公式的 50000 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54727816/

相关文章:

email - Google Apps 脚本 - MailApp

javascript - 谷歌表格: How do I get my custom function to refresh automatically?

google-apps-script - JOIN 结果长度超过 50,000 个字符的限制

java - 从 Google 电子表格中读取数据

sql - 每周分组数据

sql - 连接上的非聚集索引

mySQL 重复事件查询

google-apps-script - 在独立脚本项目中调用openById方法时出现"Service Spreadsheets failed"错误

sql - 当前组的历史总和

html - 将 HTML 内容渲染到 Google 电子表格