当前位置: 首页 > 知识库问答 >
问题:

如何在Google Sheets应用程序脚本中创建指向范围的超链接?

谷泳
2023-03-14

我试图用超链接填充单元格到Google Sheets应用程序脚本中的范围,与我在GUI中完成时所期望的结果相同。我设法以"gid=..."的形式创建了工作表的超链接...是一个工作表ID。但是我很难得到在GUI中生成超链接时使用的rangeID,例如。

HYPERLINK("#rangeid=1420762593";"'List 4'!F2:F15") 

是否可以在应用程序脚本中创建指向范围的超链接?

共有3个答案

孔乐邦
2023-03-14

这里是另一个例子。希望它是干净的、不言自明的

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)
  
}
宋原
2023-03-14

在公式中使用。

简单范围:

=超链接(getLinkByRange(“Sheet1”、“A1”),“链接到A1”)

命名范围:

=超链接(getLinkByNamedRange(“NamedRange”),“链接到命名范围”)

将代码插入脚本编辑器(工具

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;   
}
唐弘益
2023-03-14

是的,你可以在App Script中这样做。下面是一个非常简单的实现,其中构建了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")');
}

您可以将其与循环相结合,以设置跨多个工作表的链接值。

 类似资料:
  • 我已经开始了一个有4个下拉列表的谷歌表。下拉列表2、3和4都取决于下拉列表1中的选择。我有下拉2工作,但不能在应用程序脚本编辑器的代码下拉3和4。 这是我题为“下拉列表”的工作表: 第1行位于下拉列表1中(事件/事件表的C列) 第4行至第10行位于下拉列表2中(“事件/事件”表的D列) 最后一行的第15行在下拉列表3中(事件/事件表的E列) 我有以下代码,仅适用于下拉列表2(事件/事件表的D列):

  • 我有一个工作表,我需要从中获取值并在新工作表中进行设置,其中一个值需要我在索引20,26处对字符串值进行切片。我可以使用.getValue().slice(20,26)和.setValue()实现这一点。但是,在所有行中都设置了相同的数据,这是意料之中的,因为我只获得一个单元格的数据。为了解决这个问题,我尝试了一个for循环,但失败了。 当我尝试.getValues().slice(20,26)时

  • 所以最近,谷歌增加了一个功能,你可以超链接到一个特定的细胞,这是伟大的。为此,您可以在特定单元格上使用“插入链接”功能,然后从下拉菜单中单击“选择要链接的单元格区域”,然后选择要链接到的单元格或区域。在这样做的过程中,谷歌生成了一个非常方便(动态)的十位数“范围ID”。 它看起来像这样: 不过,我不明白的是如何使用脚本创建这个。 对我来说,这个函数不存在似乎很奇怪,因为它可以手动执行。 我可以使用

  • 问题内容: 如何创建一个链接到? 假设已在下方建立,而您目前在中。当您这样做时,您将直接转到。 问题答案: 符号或软链接(文件或目录,更灵活,可自我记录) 硬链接(仅文件,灵活性较差且无法自我记录) 详细信息:man ln 就像一个新目录。要避免出现 “不是目录:没有这样的文件或目录” 错误,例如@trlkly注释,请在目标中使用相对路径,即使用示例:

  • 下面是学习AzureKeyVault配置设置的说明 null 好的,所以我已经将应用程序的名称作为“企业应用程序”复制到Azure Active Directory中。我还为我刚刚创建的添加对象添加了Azure中的“get”和“list”的“访问策略”。然而,当我试图启动应用程序时,程序中出现了这样一个错误: 更新8-4-18好的,我发现Azure使用本地AppSettings.json中的'Cl