10

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

ありがとう。

更新:これは、リンクリストを作成するためにそれを使用することになった方法です。

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

1 に答える 1

13

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

以下は、スクリプトを介してこれを取得する方法に関する非常に簡単な解決策 (エラー チェックなし) です。これを Excel などからインポートしたと思われますが、それは HYPERLINK 式がすぐに表示されないためです。

このようなセルがある場合 -

ハイパーリンクのあるセル

次に、このスクリプトにより、それに関連付けられた URL を読み取ることができます -

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);
}
于 2012-12-12T20:28:44.803 に答える