对于谷歌电子表格的脚本为一个单元提供多个超链接的选择(a script for google spr

2019-09-17 10:29发布

我有一个谷歌电子表格。 在某些细胞中,它有多个名称(字符串),我想个别的超链接关联。

例如,如果我有一个细胞,如“达尔文”,很容易让我做的东西像创建一个超级链接,这个名字=Hyperlink(VLOOKUP("Charles Darwin", People!$A$1:$B$738, 2, false), "Charles Darwin")请注意,我有一个“人”表从我抢的超级链接)

但是,如果我碰巧在该单元格,说多个条目“;” 或换行分隔,例如,“查尔斯·达尔文,乔治·华盛顿”,我不能这样做。 我想给用户点击的细胞的能力,已在单元格的内容发送(作为参数),以某种脚本,并为剧本找到超链接在我的“人”片的字符串,然后一点点“弹出”旁边的牢房,在那里可以点击所需的超链接呈现给用户。

我试图找到一起在这个论坛类似的规定,但没有类似的似乎就上来了。 可能有人有两个,我(或基本的例子代码),我可以开始尝试解决这个链接? (我假定这是可能的)。

谢谢

Answer 1:

它不可能有同一细胞上的两个超链接。

它可以编写脚本来谷歌电子表格,但我不知道它会满足你的使用情况良好。 我看到的解决办法是这样的:

  • 用户点击需要的细胞,选择它。
  • 然后,他点击自定义菜单上,拿起一个条目出现,如表演环节
  • 弹出框将显示出来(不除细胞,但中心的显示屏上)的链接。

你觉得这是好的? 该代码是这样的(打开菜单工具>脚本编辑器)

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功能进行二次授权,并为您创建的菜单。 你打开电子表格下一次,菜单应自动创建。

顺便说一句,我没有测试此代码,因此它可能包含愚蠢的错误。



文章来源: a script for google spreadsheet to provide multiple hyperlink choice for one cell