我正在尝试用超链接填充细胞,以在Google表脚本中以相同的预期结果填充范围,如果我在GUI中完成的结果也会得到。我设法以" gid = ..."的形式创建了表格的超链接,而...是sheetid。但是,我很难获得在GUI中生成超链接时使用的空地,例如
HYPERLINK("#rangeid=1420762593";"'List 4'!F2:F15")
是否可以在应用程序脚本中创建超链接到范围?
是的,您可以在应用程序脚本中执行此操作。这是一个非常简单的实现,其中HYPERLINK
函数被构建并附加到单元格上:
function hyperlinkRange() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet1 = ss.getSheetByName("Sheet1");
var sheet2 = ss.getSheetByName("Sheet2").getSheetId();
sheet1.getRange("A1").setValue('=hyperlink("#gid='+sheet2+'&range='+sheet1.getRange('A1:A10').getA1Notation()+'", "Click to jump to Sheet 2")');
}
您可以将其与循环结合起来,以在多个纸上设置链接的值。
自定义功能
在公式中使用。
简单范围:
=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;
}
这是另一个示例。希望它是干净且不言自明
function hyperlinkRange(shDest,rgDest,shSrc,rgSrc,linkText) {
// get the spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet()
// get the destination sheet id
var idDest = shDest.getSheetId()
// link the range
var formula = '=hyperlink("#gid='+idDest+'&range='+rgDest+'","'+linkText+'")'
shSrc.getRange(rgSrc).setValue(formula)
}
如果要创建一个链接到另一个表,该链接将在中打开表格相同浏览器选项卡,这是您想做的:1.获取表格的ID。检查浏览器中的链接,您将看到#gid=x
,其中 x
是表ID2.然后您要将公式(超链接)设置为单元格,并将其显示为超链接 SpreadsheetApp.getActiveSheet().getRange("A1").setFormula('=HYPERLINK("#gid=X","test")').setShowHyperlink(true)
;如果您不使用setShowHyperlink(true)
,它将显示为常规文本。