【发布时间】:2020-01-25 02:17:00
【问题描述】:
我目前使用下面的基本脚本导入大量单元格(2500 行,200 列)。其中大约 20 个列是超链接,我想保留其格式,但目前在获取它们时会丢失。我确定这是因为 getValues 可能只有 Number、Boolean、Date 或 String 类型。有人知道这里的解决方法吗?
function importOnOpen() {
var values = SpreadsheetApp.openById('ABCDEFGHIJKLMNOPQRSTUVWXYZ').
getSheetByName('exportSheet').getRange('A1:HZ2500').getValues();
SpreadsheetApp.getActive().getSheetByName('importSheet').
getRange(1,1,values.length,values[0].length).setValues(values);}
一种选择是为特定的超链接列利用 getFormulas,但如果可能的话,我想避免将公式完全拉入目标工作表,以使其保持简洁。同样为每个超链接列单独调用似乎很笨拙,尽管我想我可以将它们组合在一起。
我之前的解决方案是根本不使用脚本,而是使用效果很好的 importRange 公式(另一方面请注意,“查询”函数会遇到同样的格式丢失问题)。我的 importRange 问题有两个方面:1)它半连续地获取数据,这会损害我的电子表格的性能,以及 2)由于我需要将请求分解为调用大小导致的“正在加载...”问题5 个离散的请求并将它们分组到一个 arrayFormula 中以使其始终如一地工作 - 这感觉很笨重。
另一种可能的解决方案是 setShowHyperlink(showHyperlink) 函数吗?不知道这是如何工作的,而且我还没有看到有人使用它,所以我对此表示怀疑。只是一个想法。 https://developers.google.com/apps-script/reference/spreadsheet/range#setShowHyperlink(Boolean)
【问题讨论】:
-
这些是什么类型的超链接以及丢失了什么格式?我重新创建了一个这种大小的工作表来尝试复制您的问题,但是使用您的代码传递的超链接没有问题。
-
好问题。以下是一些未正确调用的示例公式(即,仅调用了文本,但没有可以单击的相应链接) a) 超链接 (BM2,ES2) - 其中 BM2 是 URL,ES2 是我附加到基本 URL 的文本...只有 ES2 中的文本被拉入 b) 超链接 ("exampleWebsite.com/",DK2) ...只有 DK2 中的文本被调用
-
有趣的是,我确实有一些列保留了超链接格式——这些单元格中有实际的 URL。但与此同时,我也有其他包含实际 URL 的单元格,它们的超链接格式没有被保留。示例:imgur.com/a/HaxaswA 但同样,没有包含“hyperlink(x,y)”的单元格保留任何超链接格式。
标签: javascript google-sheets hyperlink google-sheets-formula google-sheets-api