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

谷歌电子表格为一个单元格提供多个超链接选择的脚本

司雅畅
2023-03-14

我有一个谷歌电子表格。在某些单元格中,它有多个名称(字符串),我希望与单个超链接关联。

例如,如果我有一个单元格,比如“查尔斯·达尔文”,我很容易通过做类似于“代码”=“超链接”(VLOOKUP(“查尔斯·达尔文”,“人”!1美元澳元:$B738美元,2,假),“查尔斯·达尔文”)(请注意,我有一个“人物”表,我从其中抓取超链接)

但如果我碰巧在那个单元格中有多个条目,比如“或者新词分离,例如“查尔斯·达尔文;乔治·华盛顿”,我不能这样做。我想让用户能够单击单元格,将单元格的内容(作为参数)发送给某种脚本,让脚本在我的“人员”表中找到这些字符串的超链接,然后在该单元格旁边向用户显示一个小“弹出窗口”,在那里可以单击所需的超链接。

我试图在这个网站上找到类似的东西,但似乎没有找到类似的东西。可能有人给我一个或两个链接(或基本示例代码),我可以开始尝试解决这个问题?(我假设这是可能的)。

共有1个答案

魏朗
2023-03-14

不可能在同一单元格上有两个超链接。

可以在Google电子表格中编写脚本,但我不确定它是否适合您的用例。我看到的解决方案如下:

  • 用户点击所需的单元格,选择它。
  • 然后他点击一个自定义菜单并选择一个条目,例如显示链接
  • 弹出窗口将显示(不是在单元格旁边,而是在屏幕中央)与链接。

你觉得这样好吗?代码如下所示(打开菜单工具

function onOpen() {
  SpreadsheetApp.getActive().
    addMenu("Test", [{name: 'Show Links', functionName:'showLinks'}]);
}

function showLinks() {
  var values = SpreadsheetApp.getActiveRange().getValue().split(';');

  var app = UiApp.createApplication().setTitle('Links'); 
  var grid = app.createGrid(values.length, 2);

  for( var i = 0; i < values.length; ++i ) {
    var url = findLink(values[i]);
    grid.setWidget(
      i, 0, app.createLabel(values[i])).setWidget(
      i, 1, url ? app.createAnchor(url, url) : app.createLabel('Not Found'));
  }

  app.add(grid);
  SpreadsheetApp.getActive().show(app);
}

var mapName2Url = null;
function findLink(name) {
  if( mapName2Url == null ) { //lazy load
    mapName2Url = {};
    var data = SpreadsheetApp.getActive().getSheetByName('People').getDataRange().getValues();
    for( var i = 1; i < data.length; ++i ) //skipping the header
      mapName2Url[data[i][0]] = data[i][1];
  }
  return mapName2Url[name];
}

将其粘贴到脚本编辑器上后,运行onOpen函数两次以对其进行授权,并为您创建菜单。下次打开电子表格时,应自动创建菜单。

顺便说一下,我还没有测试过这段代码,所以它可能包含愚蠢的错误。

 类似资料:
  • 我正在尝试从多个google电子表格中删除一个特定的表格。 我有一个主电子表格,从所有其他电子表格收集数据。从主电子表格中,我可以在其他电子表格中执行不同类型的操作,如添加工作表、重命名工作表、隐藏和锁定工作表。 但无法删除其他电子表格中的表格。查看了其他线程,但找不到任何解决方法。 这就是我到目前为止得到的。它停在这一排: "fname.delete表(本周);}" 我很感谢大家对我的帮助,因为

  • B页中有图表,其中有源数据。我想以这样一种方式将图表导入到主电子表格B中,当图表在表格B中更改时,它也应该在主表格A中动态更改。 经过大量的研究,我能够找到以下内容: Importrange-只导入数据,而不是图表 复制图表本身并将其粘贴到主工作表A,但当图表在工作表B中动态变化时,它不会更改。 发布图表并将URL作为图像插入-如果主表A是google电子表格,则不起作用,但适用于google文档

  • 我正试图找到一个链接,允许我下载我的谷歌电子表格的CSV格式版本。目前我正在使用: 除了它只下载第一张工作表之外,这工作得很好。我的文档有多页。有人知道如何格式化这个链接,以便它下载所有的工作表或特定的工作表吗?类似的东西: 或者

  • 试图复制整个电子表格,但我想没有api可以这样做。 基本上,我正在尝试做以下工作: 有一个电子表格,我想对其进行小的更改。 创建一个新的电子表格,将模板中的所有表格逐个复制到新的电子表格中(电子表格复制会更有效率) 创建新的电子表格工作正常,但从电子表格复制表格不起作用。 尝试了两种方法: 角: 给出以下错误: 对飞行前请求的响应未通过访问控制检查:无“访问控制允许原点” Google Sheet

  • 我有一个GoogleSheets电子表格,我在其中记录每月的任务,所以每张表格代表一个月。我总是移动当月的工作表,使其在电子表格中位于第一位。我希望能够向同事发送一个超链接,该超链接始终链接到第一张/最左边的工作表上的单元格或行,无论是哪张工作表。 例如,如果我有一个标记为“Customer 3”的单元格,那么我希望超链接转到电子表格中第一张/最左侧工作表上的“Customer 3”单元格,而不管

  • 谷歌电子表格中有一个项目列表,我们需要链接谷歌硬盘上另一个文件夹中的一组文件。链接的功能如下所示: 我们遇到的问题是,如果文件夹的内容与列表的顺序不完全匹配,则文件到行项目的顺序将不同步。如果同一行中另一个单元格的内容与文件名中的内容匹配,我们希望某些文件超链接到工作表中的某些单元格。我们希望避免为每个行项目手动创建链接。这在谷歌表单中是可能的吗?