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

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

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

Я каждый раз дублирую «ВОПРОС-12345». Я хотел бы создать функцию JIRA (12345), которая дает тот же результат, что и приведенная выше гиперссылка. Есть ли способ вернуть гиперссылку в скрипт, чтобы что-то вроде

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

должно сработать?


person user1417354    schedule 25.05.2012    source источник


Ответы (4)


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

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

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+"\")");
  }
}

Я считаю это обходным путем, но в настоящее время это, вероятно, единственный путь.

person Arne S    schedule 07.03.2013
comment
Здорово ! Мне просто нужно было заменить , между двумя параметрами формулы гиперссылки на ; чтобы заставить его работать. - person GeH; 10.10.2015

Проверьте это: https://code.google.com/p/google-apps-script-issues/issues/detail?id=2521

Похоже, что эта функция недоступна и не будет доступна.

Если вы хотите пропустить текстовое отображение «ВОПРОС-1234», вы можете по крайней мере вернуть ссылку на рабочую ссылку.

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

Надеюсь, это поможет

person VegasFun    schedule 31.03.2014

Вы можете облегчить необходимость 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;
}
person conny    schedule 16.01.2018

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

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

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

=HYPERLINK(CONCATENATE("http://jira.com/browse/ISSUE-",A2),CONCATENATE("ISSUE-",A2))
person Guy    schedule 26.05.2012
comment
Спасибо за ваш ответ, но я хотел бы знать, как добиться этого с помощью функции сценария. Я не держу номер в другой колонке (и не собираюсь). - person user1417354; 28.05.2012
comment
Это еще больше печатать; Что нужно, так это что-то простое; короткая функция, так что можно просто ввести «= JIRA (ISSUE-1234)» в ячейку, и эта же ячейка будет вести себя так, как если бы в нее были введены = HYPERLINK (url, text). Когда нужно сделать это 400 раз, человек оценит требование... - person Ed Randall; 13.05.2013