自定义Google电子表格功能返回超链接或现有公式

时间:2012-05-25 12:16:02

标签: google-apps-script google-sheets

我目前正在以下列格式输入Google电子表格中的超链接:

=HYPERLINK("http://jira.com/browse/ISSUE-12345","ISSUE-12345")

我每次都复制“ISSUE-12345”。我想创建一个函数JIRA(12345),它给出与上述超链接相同的结果。有没有办法在脚本中返回超链接,例如

function JIRA(jiraNum) {
  // Returns JIRA hyperlink
  var link = ("http://jira.com/browse/ISSUE-"+jiraNum,"ISSUE-"+jiraNum);
  return link;
}

会起作用吗?

4 个答案:

答案 0 :(得分:3)

我一直在努力,提出feature request and received an interesting solution

根据您的情况,以下情况可行。

function onEdit(e) {
 // limit to only apply to specific range
  col = e.range.getColumn();
  row = e.range.getRow();        
  if (row > 1 && row < 10 && col == 1) { // A2:A9
    if (e.value != "")
      e.range.setFormula("=HYPERLINK(\"http://jira.com/browse/ISSUE-"+e.value+"\", \"ISSUE-"+e.value+"\")");
  }
}

我认为这是一种解决方法,但目前它可能是唯一的方法。

答案 1 :(得分:2)

看看这个:https://code.google.com/p/google-apps-script-issues/issues/detail?id=2521

此功能似乎无法使用,无法使用。

如果您愿意跳过文本显示'ISSUE-1234',您至少可以返回链接以获取有效链接。

function JIRA(jiraNum) {
  var link = 'http://jira.com/browse/ISSUE-' + jiraNum;
  return link;
 }

我希望有帮助

答案 2 :(得分:1)

您可以通过设置单元格值来减轻对setForumla的需求并且必须处理权限:

=HYPERLINK(getJiraTicketLink(12345), getJiraTicketLabel(12345))

其中12345当然可以是(隐藏列 - )相邻单元格而不是硬编码字符串。

然后你创建两个类似于下面的简单函数:

var JIRA_BASE_URL = "http://jira.com/";
var JIRA_PROJECT_PREFIX = "ISSUE-";

function getJiraTicketLink(jiraNum) {
  return JIRA_BASE_URL + "browse/" + JIRA_PROJECT_PREFIX + jiraNum;
}

function getJiraTicketLabel(jiraNum) {
  return JIRA_PROJECT_PREFIX + jiraNum;
}

答案 3 :(得分:-3)

不需要脚本功能:

=HYPERLINK(CONCATENATE("http://jira.com/browse/ISSUE-",12345),CONCATENATE("ISSUE-",12345))

如果您在单元格中有jiraNum(例如,A2),则可以使用单元格引用:

=HYPERLINK(CONCATENATE("http://jira.com/browse/ISSUE-",A2),CONCATENATE("ISSUE-",A2))