【问题标题】:Custom Google Spreadsheet Function Returning a Hyperlink or an Existing Formula返回超链接或现有公式的自定义 Google 电子表格函数
【发布时间】:2012-05-25 12:16:01
【问题描述】:

我目前在 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;
}

会有用吗?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我也遇到了同样的问题,提交了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+"\")");
      }
    }
    

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

    【讨论】:

    • 太棒了!我只需要用“;”替换超链接公式的两个参数之间的“,”让它发挥作用。
    【解决方案2】:

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

    此功能似乎不可用,也将不可用。

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

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

    希望对你有帮助

    【讨论】:

      【解决方案3】:

      您可以通过如下设置单元格值来减轻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;
      }
      

      【讨论】:

        【解决方案4】:

        您可以使用富文本生成器:

        function onEdit(e){
              var jiraIDColumnID = 1;
              var jiraIDfirstRow = 5;
              var jiraBaseURL = "https://jira.tttttt.com/";
              if (e.value != null && 
                  e.value.trim().length != 0 &&
                  e.range.getColumn() == jiraIDColumnID && 
                  e.range.getRow() >= jiraIDfirstRow ) 
              {
                var richValue = SpreadsheetApp.newRichTextValue()
                  .setText(e.value)
                  .setLinkUrl(jiraBaseURL + "browse/" + e.value)
                  .build();
                e.range.setRichTextValue(richValue);
              } 
            }
        

        【讨论】:

          【解决方案5】:

          不需要脚本函数:

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

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

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

          【讨论】:

          • 感谢您的回复,但我想知道如何使用脚本函数来实现这一点。我不将数字保留在另一列中(也不打算保留)。
          • 打字更麻烦;需要的是简单的东西;一个简短的函数,这样人们可以简单地在单元格中输入 '=JIRA("ISSUE-1234")' 并让相同的单元格表现得就像在其中输入了 =HYPERLINK(url, text) 一样。当一个人必须这样做 400 次时,就会明白这个要求......
          猜你喜欢
          • 2015-03-06
          • 1970-01-01
          • 1970-01-01
          • 2013-04-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多