【Googleドキュメント】Apps Scriptで本文中の禁止語リスト検出!コンプラチェック

【Googleドキュメント】Apps Scriptで本文中の禁止語リスト検出!コンプラチェック
🛡️ 超解決

Googleドキュメントで作成した社内文書に、うっかり不適切な表現が含まれていないか不安に思ったことはありませんか。手動でチェックするのは時間がかかり、見落としも発生しやすいものです。Apps Scriptを使えば、任意の禁止語リストを用意して、文書全体を一括検索できます。この記事では、禁止語を自動で検出し、該当箇所を一覧表示するスクリプトの作成手順を解説します。

【要点】Apps Scriptによる禁止語チェックの流れ

  • 禁止語リストをスプレッドシートで管理: チェックしたい単語を列挙したスプレッドシートを用意します。追加や削除が簡単で、チームで共有もできます。
  • スクリプトでドキュメント本文を走査: 開いているドキュメントの全テキストから禁止語を検索し、該当箇所の文書番号や周辺テキストを取得します。
  • 結果をダイアログで表示: 検出結果をポップアップで一覧表示します。該当箇所をクリックして移動する機能も追加できます。

ADVERTISEMENT

Apps Scriptで禁止語検出ができること

Apps ScriptはGoogleドキュメントに組み込まれたサーバーサイドのスクリプト環境です。ドキュメントの本文をプログラムで読み取り、特定の文字列を含むかどうかを判定できます。禁止語検出に必要なのは、チェックしたい単語のリストと、スクリプト本体だけです。

スクリプトエディタはドキュメントのメニュー「拡張機能」→「Apps Script」から開けます。初めて使う場合は、Googleアカウントへのアクセス許可が必要です。スクリプトはGoogleのサーバー上で実行されるため、パソコンの性能に影響しません。

禁止語検出スクリプトの作成手順

1. 禁止語リストを準備する

まず、チェックしたい単語を列挙したスプレッドシートを作成します。A列に禁止語を1行に1つずつ入力してください。大文字小文字は区別したい場合は、そのままの表記で登録します。後ほどスクリプトで大文字小文字を区別するか選択できます。

スプレッドシートのID(URLの一部)を控えておきます。スクリプト内で参照するためです。

2. スクリプトエディタを開く

Googleドキュメントを開き、メニュー「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。デフォルトのコード.gsファイルにコードを記述します。

3. コードを記述する

以下のコードをコピーして貼り付けます。スプレッドシートID(‘YOUR_SPREADSHEET_ID’)とシート名(‘Sheet1’)は実際のものに置き換えてください。

function checkBanwords() {
  // ドキュメント本文を取得
  var doc = DocumentApp.getActiveDocument();
  var body = doc.getBody().getText();
  
  // スプレッドシートから禁止語リストを取得
  var ss = SpreadsheetApp.openById('YOUR_SPREADSHEET_ID');
  var sheet = ss.getSheetByName('Sheet1');
  var words = sheet.getDataRange().getValues().flat().filter(String);
  
  // 検出結果を格納する配列
  var results = [];
  
  // 各禁止語を検索
  words.forEach(function(word) {
    var startIndex = 0;
    var indices = [];
    while (true) {
      var found = body.indexOf(word, startIndex);
      if (found === -1) break;
      indices.push(found);
      startIndex = found + word.length;
    }
    if (indices.length > 0) {
      results.push({word: word, count: indices.length, positions: indices});
    }
  });
  
  // 結果を表示
  if (results.length === 0) {
    DocumentApp.getUi().alert('禁止語は見つかりませんでした。');
  } else {
    var message = '検出された禁止語:\n';
    results.forEach(function(r) {
      message += r.word + ' (' + r.count + '箇所)\n';
    });
    DocumentApp.getUi().alert(message);
  }
}

4. スクリプトを保存して実行する

コードを貼り付けたら、保存ボタン(フロッピーディスクアイコン)をクリックします。プロジェクト名は任意で構いません。次に、関数の選択ドロップダウンから「checkBanwords」を選び、実行ボタン(▶)をクリックします。初回実行時には、スクリプトに必要な権限を確認するダイアログが表示されます。内容を確認し、「許可」をクリックしてください。

実行が完了すると、ドキュメント上にアラートダイアログが表示され、検出された禁止語とその出現回数が表示されます。該当箇所の位置情報(文字数オフセット)も結果に含めているため、後でジャンプする機能を追加できます。

コンプラチェック実行時の注意点

大文字小文字の扱い

上記のコードは大文字小文字を区別します。例えば「問題」と「問題」は別の文字列として扱われます。区別しない場合は、検索前にテキストと禁止語をtoLowerCase()で統一してください。但し、完全一致ではなく部分一致の場合は意図しない単語もヒットする可能性があるため、注意が必要です。

部分一致による誤検出

禁止語リストに短い単語(例:「悪」)を含めると、「悪用」「悪質」などの単語もヒットします。部分一致で問題ない場合はそのまま使えますが、単語単位で完全一致させたい場合は、正規表現の単語境界(\b)を使用する必要があります。その場合はindexOfではなく正規表現を使った検索に変更してください。

実行権限とトリガー設定

スクリプトの実行には、ドキュメントとスプレッドシートへのアクセス権限が必要です。組織のポリシーでスクリプトの実行が制限されている場合は、管理者に相談してください。また、自動で定期的にチェックしたい場合は、スクリプトエディタの「トリガー」機能を使って時間主導型のトリガーを設定すると便利です。

ADVERTISEMENT

手動チェックと自動チェックの比較

項目 手動チェック Apps Script自動チェック
作業時間 文書が長いほど時間がかかる 数秒で完了
見落とし 発生しやすい ほぼゼロ
リスト更新の手間 都度頭に入れる必要がある スプレッドシートを編集するだけ
初期設定 不要 スクリプト作成と権限許可が必要

まとめ

Apps Scriptを使えば、Googleドキュメントの禁止語チェックを完全自動化できます。スプレッドシートで管理した禁止語リストを元に、文書全体を一瞬でスキャンし、結果をダイアログで確認できます。手動チェックと比較して時間と正確性が大幅に向上します。応用として、検出箇所にジャンプする機能や、該当箇所をハイライトする機能を追加することも可能です。まずはサンプルコードをコピーして、ご自身の文書でテストしてみてください。

ADVERTISEMENT

📄
Googleドキュメントトラブル完全解決データベースこの記事以外にも、書式・共有・Apps Script・引用など様々な困りごとへの解決策をまとめています。逆引きに活用してください。
この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。

SPONSORED