5

SpreadsheetApp.getActiveRange()。getValues();を使用しています。セルの範囲の値を取得するが、そのセルに関連付けられたハイパーリンクは返さず、テキストのみが返されます。ハイパーリンクを取得する方法はありますか?または、URLに別のフィールドを追加する必要がありますか?Google Appsスクリプトのデータセルからハイパーリンクを取得するにはどうすればよいですか?

ありがとうございました。

UPDATE:リンクリストを作成するためにこれを使い終わったのです。セル・テキストに関連付けられた

<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> 

答えて

9

ハイパーリンクは、以下の式によって明らかにされます。 Googleスプレッドシートは自動的に任意のURLをクリック可能なハイパーリンクに変換しますが、その場合は式が使用されず、テキストとURLは同じです。

以下は、スクリプトを使用してこれをどのように得ることができるかについて、非常に単純な解決策(エラーチェックなし)です。私はあなたがExcelや他の何かからこれをインポートした疑いがあります、そして、あなたはHYPERLINKの式をすぐに見ていません。

あなたはこのようになりますセルを持っている場合 - 正しい方向に私を導いた

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

おかげ -

Cell with hyperlink

は、このスクリプトは、あなたがそれに関連付けられたURLを読んで聞かせます。 var links = SpreadsheetApp.getActiveRange()。getFormulas(); 非常に素晴らしいです。 – Scottux

+0

これは動作しますが、匿名ユーザであっても適切な展開方法は何ですか? – hyip

+0

HYPERLINKに動的URLがある場合、これは機能しません。 –

関連する問題