【问题标题】:Use Google Apps Script to create hyperlink using cell text使用 Google Apps 脚本使用单元格文本创建超链接
【发布时间】:2020-01-16 02:17:00
【问题描述】:

我有一个谷歌表,其中有一列值是 Jira 票证名称。我想创建一个脚本insertJiraLink,它接受单元格引用并输出一个超链接,其中文本是票证名称,链接指向实际的 Jira 票证。

我可以很容易地创建一个 jira 链接。但我不知道如何返回带有自定义文本的超链接。

// returns a full jira hyperlink
function jiraLinks(reference) {
  return "https://jira.fanatics.com/browse/" + reference;
}

// returns text that reads "=HYPERLINK(etc etc)"
function jiraHyperlinks(reference) {
  return '=HYPERLINK("https://jira.fanatics.com/browse/' 
    + reference 
    + '", "' 
    + reference 
    + '")';
}

【问题讨论】:

  • 您的问题有什么我可以做的吗?如果我的回答对您的情况没有用。我必须道歉并修改它。如果您能合作解决您的问题,我很高兴。我想考虑一下解决方案。
  • @Tanaike 我尝试了您的解决方案,结果与上面的jiraHyperLinks 函数相同。它将文本“=HYPERLINK(etc etc)”打印到单元格中。在进一步的研究中,这似乎是谷歌不允许的——我发现了将公式插入其他单元格的示例,但没有将内容转换为公式并使用结果。
  • 感谢您的回复。我带来的不便表示歉意。在我的环境中,我可以确认脚本有效。但是从你的回复来看,我稍微修改了脚本。你能确认一下吗?如果这不是您当前问题的直接解决方案,您能否提供示例电子表格和您为复制问题所做的流程?借此,我想确认一下。顺便说一句,如果脚本编辑器中有jiraHyperlinks()的函数,请修改函数名。

标签: google-apps-script google-sheets hyperlink


【解决方案1】:
  • 您想使用自定义函数输入公式。
  • 您希望使用 Google Apps 脚本实现此目的。

如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。

修改点:

  • 很遗憾,自定义函数不能放公式。我认为这是谷歌方面的规范。因此,在您的情况下,需要使用解决方法。
  • 作为一种解决方法,我想建议使用 OnEdit 事件触发器放置公式。
    • 在这种情况下,当=jiraHyperlinks(reference) 放入单元格时,单元格的值会被 OnEdit 事件触发器转换为公式。

示例脚本:

function onEdit(e) {
  var value = e.value.split("\"");
  if (/^=jiraHyperlinks\(/.test(value[0])) {
    var reference = value[1];
    e.range.setFormula('=HYPERLINK("https://jira.fanatics.com/browse/' + reference + '", "' + reference + '")');
  }
}

用法:

  • 为了运行上述脚本,将脚本复制粘贴到脚本编辑器并保存后,请将=jiraHyperlinks("sample")的公式放入单元格中。这样,=jiraHyperlinks("sample text") 将转换为 =HYPERLINK("https://jira.fanatics.com/browse/sample", "sample")

注意:

  • 这是一个用于测试此解决方法的简单示例脚本。可能需要针对这种情况修改脚本。请注意这一点。

参考资料:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

编辑:

  • 在这个示例脚本中,公式是直接从编辑范围中检索出来的,而不使用e.value

示例脚本:

function onEdit(e) {
  var range = e.range;
  var value = range.getFormula().split("\"");
  if (/^=jiraHyperlinks\(/.test(value[0])) {
    var reference = value[1];
    range.setFormula('=HYPERLINK("https://jira.fanatics.com/browse/' + reference + '", "' + reference + '")');
  }
}

【讨论】:

    猜你喜欢
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 2021-10-22
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多