GoogleスプレッドシートでHTMLをプレーンテキストに変換する方法【GASあり/なしで対応】

この記事の内容について、業務や開発でお困りの場合は個別に対応できます。

GoogleスプレッドシートでHTMLをプレーンテキストに変換する方法

Googleスプレッドシートを使用していると、時折HTML形式のデータを扱う場面がある。例えば、ウェブからデータをインポートしたり、他のシステムからデータを取り込んだりする際に、HTMLタグが混在してしまうことがある。これをそのままにしておくと、データの視認性が低下したり、分析や処理が難しくなったりする。そこで、今回はGoogle Apps Script(GAS)を使ったHTMLからプレーンテキストへの変換方法、そしてGASを使えないシーンでの対応策について解説する。

Google Apps Scriptを使ってHTMLをプレーンテキストに変換する

まず、Google Apps Scriptを使えば、HTMLを簡単にプレーンテキストに変換できる。以下のスクリプトを使用すると、スプレッドシート内のセルに含まれるHTMLタグを削除し、プレーンテキストに変換することができる。

function htmlToPlainText() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var range = sheet.getActiveRange();
  var values = range.getValues();
  
  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      values[i][j] = stripHtml(values[i][j]);
    }
  }
  
  range.setValues(values);
}

function stripHtml(html) {
  if (typeof html !== 'string') {
    return html;
  }

  // HTMLタグを除去するための正規表現を使用
  var plainText = html.replace(/<\/?[^>]+(>|$)/g, "");
  
  // エンティティのデコード(例: & -> &)
  plainText = plainText.replace(/ /g, " ");
  plainText = plainText.replace(/&/g, "&");
  plainText = plainText.replace(/"/g, "\"");
  plainText = plainText.replace(/</g, "<");
  plainText = plainText.replace(/>/g, ">");
  
  return plainText;
}

このスクリプトは、スプレッドシート内で選択された範囲のセルに含まれるHTMLをプレーンテキストに変換するものである。非常に強力で、複数のセルや大量のデータにも対応できる。

GASを使えないシーンでの対処法

しかし、GASを使えない状況もあるかもしれない。例えば、社内ポリシーでスクリプトの実行が制限されている場合や、簡単な処理を手早く行いたい場合などである。そのような場合、Googleスプレッドシートに標準で備わっている関数を使ってHTMLタグを除去する方法がある。

  1. SUBSTITUTE関数を使用してタグを削除
    SUBSTITUTE関数は、特定の文字列を他の文字列に置き換えることができる。例えば、セルA1の<br>タグを削除するには、次のようにする。
=SUBSTITUTE(A1, "<br>", "")

ただし、複数のタグが混在する場合は、すべてのタグに対してこの処理を行う必要がある。

2. REGEXREPLACE関数を使用してタグを一括削除
より柔軟に対応するために、REGEXREPLACE関数を使うことも可能である。正規表現を使用して、すべてのHTMLタグを一括で削除する。

=REGEXREPLACE(A1, "<[^>]+>", "")
  1. これにより、セルA1内のすべてのHTMLタグが削除され、プレーンテキストのみが残る。

まとめ

Google Apps Scriptを使えば、HTMLをプレーンテキストに変換する処理を自動化し、大量のデータにも対応できる。スクリプトを使うことで、柔軟性と効率を高めることができる。一方で、スクリプトを使用できないシーンでは、Googleスプレッドシートの組み込み関数を活用することで、手動でHTMLをプレーンテキストに変換することも可能である。状況に応じて適切な方法を選択し、効率的に作業を進めてほしい。

それといくつか。

少し応用編で。

GASスクリプト例:引数でセルを指定してHTMLをプレーンテキストに変換

function convertHtmlToPlainText(cellReference) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // 引数で渡されたセルの範囲を取得
  var cell = sheet.getRange(cellReference);
  
  // セル内のHTMLを取得
  var htmlContent = cell.getValue();
  
  // HTMLをプレーンテキストに変換
  var plainText = stripHtml(htmlContent);
  
  // プレーンテキストをセルに設定
  cell.setValue(plainText);
}

function stripHtml(html) {
  if (typeof html !== 'string') {
    return html;
  }

  // HTMLタグを除去するための正規表現を使用
  var plainText = html.replace(/<\/?[^>]+(>|$)/g, "");
  
  // エンティティのデコード(例: & -> &)
  plainText = plainText.replace(/ /g, " ");
  plainText = plainText.replace(/&/g, "&");
  plainText = plainText.replace(/"/g, "\"");
  plainText = plainText.replace(/</g, "<");
  plainText = plainText.replace(/>/g, ">");
  
  return plainText;
}

使い方

  1. 上記のスクリプトをGoogle Apps Scriptエディタに貼り付けて保存する。
  2. convertHtmlToPlainText関数を実行するときに、セルの参照を引数として渡す。
convertHtmlToPlainText("A1");

ZIDOOKA!

この記事の内容について、対応できます

この記事に関連する技術トラブルや開発上の問題について個別対応を行っています。

個別対応は3,000円〜 内容・工数により事前にお見積りします
最後までお読みいただきありがとうございました

コメントを残す

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

AI活用に関するポリシー

当サイトでは、記事の執筆補助にAIを活用する場合がありますが、全面的な委任は行いません。