【问题标题】:How to process all named ranges in a Google Sheet?如何处理谷歌表格中的所有命名范围?
【发布时间】:2015-04-14 18:54:47
【问题描述】:

有没有办法处理 Google 表格中的所有命名范围?

Google 文档有 .getNamedRanges(),但我找不到任何类似的工作表。我想读取并打印每个范围参数。

我的最终目标是修复大量命名范围。有问题的文档中有 200 多个。

工作表 (Documented here) 中存在一个错误,并且由于命名范围中的默认范围具有合并单元格的整个跨度(即:A1:J1),但如果您仅指定第一个单元格,则命名范围仅适用于公式,我想我可以通过接受默认的命名范围(例如A1:J1)来节省大量时间,然后编写脚本,这样我就可以把所有的东西都去掉,只留下A1。为此,我只需要能够获取工作表中所有命名范围的列表。

这可能吗?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    至少现在的答案是肯定的。以编程方式处理命名范围仍然存在一些令人沮丧的限制,但情况已大为改善。

    问题中引用的相同 .getNamedRanges() 方法适用于工作表(仅引用工作表中的范围的命名范围)或电子表格(电子表格中的所有命名范围)对象。它返回一个包含所有命名范围的数组。

    您不能在 GAS 中直接按名称访问命名范围。一个相当令人抓狂的疏忽,需要遍历整个命名范围数组才能找到所需的范围。

    然而,最后,你真的没有什么不能用它们做的。正如关于 SO 的其他几个问题所强调的那样,以编程方式删除命名范围几乎不是一个好主意。尽管有时删除一个然后重新添加它会容易得多,但这会将工作表中的每个引用破坏到命名范围(除非他们使用尴尬的 indirect("named_range_name") 构造)。

    【讨论】:

    • 虽然你的答案是正确的,但也只是勉强如此。我的意思是谷歌最近才在表格中添加了.getNamedRanges()。 2个月前,左右。作为一个书呆子,我对这种变化感到非常兴奋。 :)
    • 这解释了很多。大约 6 周前,我将注意力转向 GAS,但无法理解命名范围的所有令人费解的事情。它们仍然是一个主要的痛苦,因为你不能.getNamedRangeByName()(不自己编写方法)。
    【解决方案2】:

    很遗憾,简短的回答是否定的。

    有一个增强请求:

    https://code.google.com/p/google-apps-script-issues/issues/detail?id=917

    您可以为它投票并接收更新。

    【讨论】:

    • 这真的很糟糕。 :( 哦,好吧,我非常感谢您的回复。看起来我只是要手动编辑它们。
    • 作为附录,你们会很高兴知道.getNamedRanges() 现在是一个东西。
    猜你喜欢
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    相关资源
    最近更新 更多