5

Używam SpreadsheetApp.getActiveRange(). GetValues ​​(); aby uzyskać wartość zakresu komórek, ale nie zwraca hiperlinku powiązanego z tą komórką, tylko tekst. Czy istnieje sposób na uzyskanie hiperłącza lub czy muszę dodać kolejne pole z adresem URL?Jak mogę pobrać hiperłącze z komórki danych w skrypcie aplikacji Google?

Dzięki.

AKTUALIZACJA: W ten sposób użyłem go do zbudowania listy linków.

<ul> 
    <? 
    var range = SpreadsheetApp.getActiveRange(); 
    var data = range.getValues(); 
    var links = range.getFormulas(); 

    for(var i=1; i < data.length; i++){ 
     if(data[i][0] !== ''){ 
      ?> 
      <li><a href="<?= links[i][0].split("\"")[1]; ?>"><?= data[i][0]; ?></a></li> 
      <? 
     } 
    } 
    ?> 
</ul> 

Odpowiedz

9

Hiperłącze powiązane z tekstem komórki jest manifestowane za pomocą formuły. Arkusze Google Spreadsheets automagicznie przekształcają dowolny adres URL w klikalny hiperlink, ale w takich przypadkach formuły nie są używane, a tekst i adres URL są takie same.

Poniżej znajduje się bardzo proste rozwiązanie (bez sprawdzania błędów), w jaki sposób można uzyskać to za pomocą skryptów. Podejrzewam, że zaimportowałeś to z Excela lub czegoś innego i nie widzisz łatwo wzoru HYPERLINK.

Jeśli masz komórkę, która wygląda tak -

Cell with hyperlink

Wtedy ten skrypt pozwoli Ci czytać URL z nim związane -

function getURL() { 
    var range = SpreadsheetApp.getActiveSheet().getActiveCell(); 

    //logs - Google 
    Logger.log(range.getValue()); 

    //logs - =HYPERLINK("http://www.google.com", "Google") 
    Logger.log(range.getFormulaR1C1()); 

    //simple regex to get first quoted string 
    var url = /"(.*?)"/.exec(range.getFormulaR1C1())[1]; 

    //logs - http://www.google.com 
    Logger.log(url); 
} 
+3

Dzięki które doprowadziły mnie we właściwym kierunku . var links = SpreadsheetApp.getActiveRange(). GetFormulas(); Bardzo niesamowite. – Scottux

+0

Działa, ale jaka jest właściwa metoda wdrożenia dla każdego, nawet anonimowego? – hyip

+0

Pamiętaj, że to nie działa, jeśli adres HYPERLINK ma dynamiczny adres URL. –

Powiązane problemy