【发布时间】:2021-08-04 10:37:09
【问题描述】:
我有一个包含超过 100k 行的长电子表格,其中特定列的值主要是包含链接的值。这些值在不使用任何函数(如超链接)的情况下保存链接,我正在尝试找到将它们提取到不同列中的最有效方法。
我创建了一个电子表格,使用下面的脚本从 H 列中的值中提取 url(第一列):
https://docs.google.com/spreadsheets/d/1_y0PD3n35AKNEAcvCLKBGEmTpThjD3LQTScndaytpWA/edit#gid=0
我面临的问题是,在大多数情况下,我都会遇到处理错误,即函数超时。那么提取 URL 的最佳方法是什么?
function RichTextLinks(rangeA1, dynamic_reference) {
if (typeof rangeA1 !== 'string') {
throw new Error('RichTextLinks expected rangeA1 to be a text string like "A2:A42" but got ' + Object.prototype.toString.call(rangeA1) + ' instead.');
}
const range = SpreadsheetApp.getActiveSheet().getRange(rangeA1);
const richText = range.getRichTextValues();
return richText.map(row => row.map(value => value.getLinkUrl()));
}
【问题讨论】:
-
你确定它只是超时吗?我刚刚用 100,000 个富文本链接做了一个测试,不到一分钟就完成了。您能否提供更多有关您正在做什么的背景信息,因为它可能是脚本的另一部分超时?您还可以澄清为什么您尝试使用自定义函数而不只是从编辑器运行脚本吗?
-
@iansedano 感谢您的评论!只是提醒我是脚本新手。我的电子表格确实有更多的公式和计算,我认为处理所有内容可能需要很长时间。因此,RichTextLinks 函数要么保持“正在加载”,要么给出#ERROR。我正在使用一个函数,因为数据是动态的并且不断变化,但我也不知道如何从编辑器中运行所有内容,使其每天自动化。如果您认为这样会更好,任何示例都会很棒?提前致谢!
标签: google-apps-script google-sheets