Google Apps Scriptでリンク付きセルからURLだけを取り出す

ウェブで見かけた質問に対しての解答として作ってみました。Googleスプレッドシートでセルの内容に対してハイパーリンクが設定されてる場合、そのURLのみを取り出して別のセルに書き出すスクリプトになります。

ハイパーリンクはSpreadsheet上では「リッチテキスト」の1種とみなされる為、通常のgetValuesではなくgetRichTextValuesを使うのと、getLinkUrlを使うのがポイントです。

今回利用するサンプル

recordシートのA列にある「ハイパーリンクが設定されてるデータ」を一括で取得し、その中のURLだけを取り出してtargetシートのA列に書き出すスクリプトになっています。

図:ハイパーリンクが設定されてるセル

ソースコード

単純にコピーするコードの場合

上記は単純にrecordシートからtargetシートへとコピーしてるだけのコードです。copyToの場合書式もそのままに完全コピーします。第三引数のfalseは転置する場合はTrueにしますが、あまり使う機会はないかと。

但しこれではURLだけ取り出すといったことは出来ません。

URLを取り出して貼り付けるコード

URLだけ取り出す場合には、getValuesではなくgetRichTextValuesを利用してリッチテキストを取り出します。単体のセルの場合はgetRichTextValueとなるので注意。

取り出した塊はオブジェクトが詰まった配列で返ってくるので、ループで一個ずつ取り出して、getLinkUrlにてハイパーリンクを取り出すことが可能です。rec[0]を指定していますが、二次元配列の常に0番目にしかオブジェクトは入っていません。

取得したものを別の2次元配列として組み立てて、最後に一気に書き出すようにします。

図:無事にリンクだけを取り出せました。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)