UK9*_*K97 2 hyperlink google-sheets google-apps-script array-formulas google-sheets-formula
我正在尝试以一种可以使用'= MATCH()“函数进行复制的方式将超链接插入到单元格中。但是,我似乎无法找到一种无需使用GID即可链接Google表格中单元格的方法。
当我右键单击并“获取到此单元格的链接”时,我得到的URL末尾带有“#gid = 1933185132”。但是,它没有结构,我不能将其与MATCH公式一起使用,也不能像在Excel中通常那样自动填充它。
https://docs.google.com/spreadsheets/d/sheetkey/edit#gid=1933185132
但是,如果这具有像这样的单元格引用
https://docs.google.com/spreadsheets/d/sheetkey/edit#Sheet1!C12
我可以轻松地为MATCH函数重新创建它。
问题:是否有一种替代方法,可以像上面显示的那样链接单元格?如果不能,我可以使用公式提取“ Sheet1!C12”的GID吗?
我已尽我所能搜索了Google论坛和堆栈溢出,并且我看到的唯一解决方案似乎是使用带有“ var sheet”的脚本,而我对0编码知识一无所知。
这应该是一件非常简单的事情,但是我找不到出路。任何对此问题的见解都将受到赞赏。非常感谢你。
您可以创建这样的链接:
=hyperlink("#gid=1166414895range=A1", "link to A1")
每个标签都有一个唯一的键,称为gid,您可以在链接中找到它:
#gid永远不会改变。标签名称可能会更改,并且使用gid更安全,公式也会中断。A1是您需要使用match,address函数获取动态链接的一部分。我找不到有关此主题的文档,也找不到使用选项卡名称的方法。
现在,根据您的浏览器,您的剪贴板将包含完整的URL:
https://docs.google.com/spreadsheets/d/xxxxxxxxxx/edit#rangeid=nnnnnnnnnn
否则剪贴板将只有范围ID片段:
#rangeid=nnnnnnnnnn
如果只有片段,则需要将其附加到文档的URL上,以创建范围的完整URL。
可能还有其他一些更简单的方法来获取范围ID,但是我还没有注意到。看到相关问题,回答类似问题。
PS:复制命名范围的URL后,您可以按照上述步骤删除创建的链接。
在公式中使用。
简单范围:
=HYPERLINK(getLinkByRange("Sheet1","A1"), "Link to A1")
命名范围:
=HYPERLINK(getLinkByNamedRange("NamedRange"), "Link to named range")
将代码插入脚本编辑器(“工具”>“脚本编辑器”):
function getLinkByRange(sheetName, rangeA1, fileId)
{
// file + sheet
var file = getDafaultFile_(fileId);
var sheet = file.getSheetByName(sheetName);
return getCombinedLink_(rangeA1, sheet.getSheetId(), fileId, file)
}
function getLinkByNamedRange(name, fileId)
{
// file + range + sheet
var file = getDafaultFile_(fileId);
var range = file.getRangeByName(name);
var sheet = range.getSheet();
return getCombinedLink_(range.getA1Notation(), sheet.getSheetId(), fileId, file)
}
function getDafaultFile_(fileId)
{
// get file
var file;
if (fileId) { file = SpreadsheetApp.openById(fileId); }
else file = SpreadsheetApp.getActive();
return file;
}
function getCombinedLink_(rangeA1, sheetId, fileId, file)
{
var externalPart = '';
if (fileId) { externalPart = file.getUrl(); }
return externalPart + '#gid=' + sheetId + 'range=' + rangeA1;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5067 次 |
| 最近记录: |