Пользовательская функция электронной таблицы Google Возврат гиперссылки или существующей формулы

В настоящее время я вхожу в гиперссылки в Google Spreadsheet в форме:

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

Я дублирую "ISSUE-12345" каждый раз. Я хотел бы создать функцию JIRA (12345), которая дает тот же результат, что и вышеупомянутая гиперссылка. Есть ли способ вернуть гиперссылку в script, например, что-то вроде

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

будет работать?

Ответ 1

Я боролся с тем же, подал запрос и получил интересное решение:

Применительно к вашей ситуации следующее будет работать.

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", вы можете хотя бы вернуть ссылку для рабочей ссылки.

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

Нет необходимости в функции script:

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

и если у вас есть jiraNum в ячейке (например, A2), вы можете использовать ссылку на ячейку:

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