2012-05-25 9 views
10

Attualmente sto entrando collegamenti ipertestuali in un foglio di calcolo di Google nella forma:personalizzata di Google funzione Spreadsheet Restituzione di un collegamento ipertestuale o una formula esistente

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

sto duplicando "questione-12345" ogni volta. Vorrei creare una funzione JIRA (12345) che restituisca lo stesso risultato del collegamento ipertestuale precedente. C'è un modo per restituire un collegamento ipertestuale in uno script, tale che qualcosa come

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

funzionerebbe?

risposta

-3

Non c'è bisogno di una funzione di script:

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

e se avete il vostro jiraNum in una cella (ad esempio, A2), è possibile utilizzare il riferimento di cella:

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

Grazie per la risposta, ma vorrei sapere come raggiungere questo obiettivo con una funzione di script. Non mantengo il numero in un'altra colonna (e non intendo farlo). – user1417354

+1

Questo è ancora più digitante; Ciò di cui c'è bisogno è qualcosa di semplice; una breve funzione in modo tale che si possa semplicemente inserire '= JIRA ("NUMERO-1234")' nella cella e fare in modo che la stessa cella si comporti come se fosse stato inserito = HYPERLINK (url, testo). Quando uno deve fare questo 400 volte, uno apprezzerà il requisito ... –

3

ho faticato con lo stesso, archiviato un feature request and received an interesting solution:

Applicato alla vostra situazione il seguente avrebbe funzionato.

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

Ritengo che sia una soluzione alternativa, ma attualmente è probabilmente l'unica via da percorrere.

+0

Grande! Ho appena dovuto sostituire il "," tra i 2 parametri della formula del collegamento ipertestuale per ";" per farlo funzionare. – GeH

2

Dai un'occhiata a questo: https://code.google.com/p/google-apps-script-issues/issues/detail?id=2521

Sembra che questa funzione non è disponibile e non sarà disponibile.

Se si desidera saltare il display di testo 'NUMERO-1234', è possibile restituire almeno il collegamento per un collegamento funzionante.

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

Mi auguro che aiuta

1

È possibile alleviare la necessità di setForumla e avere a che fare con i permessi, impostando il valore della cella come segue:

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

dove 12345 naturalmente può essere una (colonna nascosta) cella adiacente anziché una stringa codificata.

quindi si crea due funzioni semplici simile al di sotto:

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; 
} 
Problemi correlati