GASでHTMLのテキストをタグ除去したプレーンテキストに変換する方法

Google Apps Script(GAS)では、スクレイピングやテキスト処理を行う中で、HTMLのタグを含んでいるテキストを扱うことも多いです。

HTMLテキストにはリンクのaタグや装飾のspanタグが含まれており、それらが不要になることがあります。

そこで、HTMLテキストからタグ情報を取り除き、プレーンテキストに変換する方法を解説します。

ウェブのテキストはHTMLタグが含まれる

ウェブに存在しているテキストは、シンプルなプレーンテキストではなく、HTMLタグが含まれています。

ハイパーリンクで遷移できるaタグや、太字の強調表示になるstrongタグ、フォントや文字の色を変更する際に使うspanタグがあります。

Google Apps Script(GAS)でスクレイピングによって、ウェブに存在する情報を取得すると、HTMLテキストが取得されるようになります。

例えば、ブログ記事の本文をすべて取得する際には、本文内の色々なHTMLタグが含まれます。

そうしたウェブデータのテキスト処理する場合は、HTMLテキストを扱わなければならないです。

GASでテキスト出力時にタグも表示

テキストデータをHTML形式で取得すると、前述したようなHTMLタグも含んで取得されます。

そのままGoogle Apps Script(GAS)でスプレッドシートやテキストファイルとして出力すると、HTMLのタグを表示されています。

ただ、HTML形式ではなく、プレーンテキストとして取得したい場合が多いです。

そんな時にHTMLタグが含まれたテキスト情報をプレーンテキストに変換したいニーズがあります。

HTML→プレーンテキスト変換メソッドはGASに存在しない

Google Apps Script(GAS)でHTMLタグを含んだテキストをプレーンテキストに変換したい場合はどうすればいいのでしょうか。

残念ながら、2023年時点ではGASに用意されているメソッドにはHTML→プレーンテキスト変換のメソッドはありません。

そのため、メソッドで簡単にHTMLタグ除去するのは難しく、実装方法を検討する必要があります。

実はあるメソッドを使うことで1行のコードでHTMLテキストをプレーンテキストに変換可能です。

正規表現によるreplaceメソッドで実現可能

HTMLテキストをプレーンテキストに変換するGoogle Apps Script(GAS)のメソッドはString.replaceです。

replaceメソッドは文字列を扱うStringオブジェクトで利用でき、文字列の置換や削除できます。

ただ、色々な種類があり、属性やクラス名、IDも含まれるHTMLタグは通常の文字列変換では実現困難です。

そこでHTMLタグのような複雑な構成でも対応できる正規表現を用います。

String.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'');

詳しい解説は除きますが、HTMLタグの<>で囲われた部分が正規表現にマッチするようにし、それらを第2引数で値なしを指定してHTMLタグを取り除きます。

上記のような正規表現を用いたreplaceメソッドを実行することで、文字列からHTMLタグを除去してプレーンテキストを取得することができます。

GASでHTML→プレーンテキスト変換サンプルコード

実際にGoogle Apps Script(GAS)でHTMLの文字列情報をプレーンテキストに変換するサンプルコードを解説します。

Google Apps Script(GAS)でHTMLテキストをタグを含まないプレーンテキストに変換するサンプルコード
function removeHtmlTag() {
  //HTMLタグを含んだHTMLテキストを定義
  const htmlText = '<div><p><strong>ログインは</strong><a href="#">こちら<a/></div>';
  //HTMLタグもログ出力に表示
  console.log(htmlText);
  //正規表現によるreplaceメソッドでHTMLタグを除去
  const plainText = htmlText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/g,'');
  //ログ出力すると、HTMLタグがないプレーンテキストが表示
  console.log(plainText);
}

3行目にconstで定数として定義しているのがHTMLタグを含んだテキストデータです。

そのままログ出力した場合の表示を確認した後、正規表現によるreplaceメソッドでHTMLタグを取り除きます。

再度ログ出力すると、HTMLテキストからプレーンテキストになっていることが確認できます。

Google Apps Script(GAS)でHTMLテキストをタグを含まないプレーンテキストに変換するサンプルコードを実行したところ、HTMLタグがないプレーンテキストが出力

このように、正規表現を引数に指定したreplaceメソッドでHTMLをプレーンテキストに変換できました。

まとめ・終わりに

今回、Google Apps Script(GAS)でHTMLテキストをプレーンテキストに変換する方法を紹介しました。

スクレイピングなどウェブデータを収集すると、プレーンテキストではなくHTMLタグが含まれた状態になっています。

テキスト処理や加工する上では、プレーンテキストに変換したいニーズが強いです。

その場合、正規表現を用いたreplaceメソッドを実行することで、HTMLタグをすべて除去してプレーンテキストに変換することができます。

HTMLファイルのテキストから、テキスト情報のみを取得したい場合は、replaceメソッドによる変換を試してみてください。