gpt4 book ai didi

google-apps-script - 谷歌电子表格脚本,为一个单元格提供多个超链接选择

转载 作者:行者123 更新时间:2023-12-01 23:27:56 24 4
gpt4 key购买 nike

我有一个 Google 电子表格。在某些单元格中,它有多个名称(字符串),我想将它们与各个超链接关联起来。

例如如果我有一个像“Charles Darwin”这样的单元格,我可以很容易地通过执行类似的操作来创建该名称的超链接

=Hyperlink(VLOOKUP("Charles Darwin", People!$A$1:$B$738, 2, false), "Charles Darwin")

(请注意,我有一个“人员”表,我可以从中获取超链接)

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

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

最佳答案

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

可以将脚本写入 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-apps-script - 谷歌电子表格脚本,为一个单元格提供多个超链接选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10711379/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com