谷歌表格脚本:你能从rangeId获取一个范围吗?

4
我的Google表格上有一个单元格位于sheet1,它包含了一个到sheet2中单元格的链接。在我的函数中,我可以获取链接的URL,但无法找出如何从这个rangeId得到范围。
var link = generatorSheet.getRange(currRow, 2)
var linkUrl = link.getRichTextValue().getLinkUrl()

Logger.log(linkUrl)  // linkUrl = "rangeid=1843553975"

我尝试使用getRangeByName和其他各种函数,但始终得到null值,而不是Range对象。

提前感谢!

编辑:我的总体目标是迭代sheet1中的每一行,在该行第2列中的每个单元格链接到sheet2中的一个单元格。我需要取出sheet2中单元格的值并将其复制到sheet3中。在sheet1中,每一行的第1列有一个复选框,这就是我用来确定是否将复制链接值的方法。我将拥有一个按钮来启动我的函数并填充sheet3,它必须假定这些链接已经存在-它们是手动完成的。


我认为GAS不支持它。您可以考虑使用A1表示法(range=B2:D4)代替。 - idfurw
generatorSheet.getRange(currRow,2) 的内容是什么? - Cooper
这是一个与问题相关的问题 https://issuetracker.google.com/issues/129841094 - Mike Steelson
并不是因为有一个目的,而是这是实际的链接。#rangeid=1843553975 网页浏览器使用 JavaScript 来突出显示该范围。但据我所知,在应用脚本文档中没有记录此 ID。 - TheMaster
1
@TheMaster:感谢您的建议。然而,我只知道两种链接单元格的方法(不是工作表或网页):第一种是通过公式,我可以检索范围的工作表和A1表示法,或者第二种是通过Ctrl + K到命名范围,我得到范围ID。是否有第三种我不知道的方法,并在搜索范围时给出范围ID?(对我的英语很抱歉,我是法国人)...编辑:好的,我找到了通过用户界面链接到范围的方法。谢谢。 - Mike Steelson
显示剩余5条评论
2个回答

2

当您使用用户界面创建到范围的超链接时,您会遇到这个问题。我认为您可能需要改变设计超链接的方式,并尝试通过公式来定义它。

=hyperlink("#gid=123456789&range=A2","go to ...")

然后,您将通过以下方式检索范围:

Logger.log(linkUrl.match(/(?<=range=).*/g))

1

为了文档记录,

这是一个URL哈希片段:

#rangeid=1843553975

通过用户界面插入链接到范围时,似乎会创建id。这与namedRange明显不同。单击后,在浏览器中附加到url中,即https://docs.google.com/spreadsheets/id/edit#rangeid=1843553975。一旦附加,通过onpopstate javascript事件,链接到id的范围将在浏览器/应用程序中突出显示。
NamedRanges有类似的工作流程。它也提供一个rangeid=<10位数字ID>。但是,它还附带了一个名称。但即使在这种情况下,也不能检索rangeid,尽管Sheets API提供了一个混淆的range id
曾经有一个向Google提出的功能请求,但由于请求者缺乏回应而被废弃: 你可以在那里创建一个类似的新问题,并附上此答案的链接。创建完毕后,请在此处链接该问题。
其他相关的跟踪器:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接