【コピペでOK】GASで法人名を自動クレンジング!表記ゆれを自動で統一する方法

自動化事例

リストにある会社名の「(株)」と「株式会社」が混在していて、管理に困っていませんか?

MAツールや顧客リストにおいて法人名の表記がバラバラだと、正確なデータ分析ができなかったり、重複アプローチの原因になったりします。

この記事では、GoogleスプレッドシートとGAS(Google Apps Script)を使い、ボタン一つで「(株)」や「(有)」といった法人名の表記ゆれを「株式会社」「有限会社」などに自動で統一する方法を解説します。

この記事を読めば、以下のことができるようになります。

  • コピペで使えるGASで、すぐに法人名の表記ゆれ統一を自動化できる
  • GASのコードがどのような処理をしているか、その仕組みを理解できる
  • GAS以外の方法として、関数を使った代替案も知ることができる

面倒な手作業から解放され、より価値のある業務に時間を使いましょう!

【解決フロー】コピペで使える!法人名表記ゆれ統一GAS

ここからは、実際に課題を解決するための手順です。 今すぐ解決したい方は、以下手順を使えばボタン一つで表記ゆれを統一できます。 具体的な設定方法を知りたい方は、【詳しく知りたい方へ】に飛んでください。

Step1:事前準備

1.対象データの用意

表記ゆれを修正する法人名データ(ExcelまたはCSV形式など)をご用意ください。
※本記事では、スプレッドシート上のサンプルデータを使用します。

2.スプレッドシートのコピー

法人名変換スプレッドシートを開き、コピーを作成してください。

Step2:対象データの更新

コピーしたスプレッドシートの「法人名変換」シートを開き、A列に用意した法人名データを貼り付けます。
(任意)統一したい表記のパターンを追加・変更したい場合は、「変換リスト」シートのA列(変換前)とB列(変換後)を編集してください。

変換前の状態
変換リスト

Step3:法人名クレンジングの実行

1.Google Apps Script(GAS)の実行許可(初回のみ)

「法人名変換開始」ボタンをクリック後、
Google Apps Script(GAS)の実行許可を行います。

GAS起動ボタン

2.変換の実行

許可後に実行すると、法人名の表記ゆれ統一が自動で実行され、B列に結果が出力されます。

GAS起動後

【詳しく知りたい方へ】GASの仕組み

ここでは、先ほど実行したGASのコード全文と、その仕組みについて解説します。

GASのコード全文

この自動化は、裏側で動く以下のGASによって実現されています。テンプレートシートの「拡張機能」→「Apps Script」から、実際のコードを確認できます。

/**
 * 法人格の表記ゆれを統一するメインの関数
 */
function unifyCorporateNames() {
  // 1. 操作対象のシートを取得
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const dataSheet = ss.getSheetByName('法人名変換');
  const listSheet = ss.getSheetByName('変換リスト');

  // 実行前に前回の結果をクリア
  dataSheet.getRange("B3:B").clearContent();

  // 2. 「変換リスト」シートから、変換ルール(A列:変換前, B列:変換後)を取得
  const conversionList = listSheet.getRange(2, 1, listSheet.getLastRow() - 1, 2).getValues();

  // 3. 「法人名変換」シートから処理対象の会社名リストを取得
  const lastRow = dataSheet.getLastRow();
  if (lastRow < 3) {
    // 変換対象のデータが無ければ、アラートを出して処理を終了
    Browser.msgBox('A列の3行目以降に、整形したい法人名データを入力してください。');
    return;
  }

  const range = dataSheet.getRange(`A3:A${lastRow}`);
  const values = range.getValues();

  // 4. 1行ずつクレンジング処理を実行
  const cleanedValues = values.map(row => {
    let name = row[0];
    if (typeof name !== 'string') {
      return ['']; // 文字列でなければ空文字を返す
    }
    
    // 変換リストに基づいて置換処理
    conversionList.forEach(pair => {
      const before = pair[0];
      const after = pair[1];
      if (before) { // 変換前の値が空でなければ実行
        name = name.replaceAll(before, after);
      }
    });

    // 全角英数字を半角に変換
    name = name.replace(/[A-Za-z0-9]/g, function(s) {
      return String.fromCharCode(s.charCodeAt(0) - 0xFEE0);
    });
    
    // 最後に残った前後の余分なスペースを削除
    name = name.trim();
    
    return [name];
  });

  // 5. 処理結果をB列に書き出す
  dataSheet.getRange(3, 2, cleanedValues.length, 1).setValues(cleanedValues);
  SpreadsheetApp.flush();
  
  // 完了メッセージを表示
  Browser.msgBox('表記ゆれの統一が完了しました。');
}

GASの解説

  • 「変換リスト」シートから、変換ルールを取得
    スクリプト内に直接ルールを書き込むのではなく、「変換リスト」シートのA列(変換前)とB列(変換後)からルールを読み込むようにしています。これにより、新しい表記ゆれのパターンを追加したい場合も、コードを触らずにシートを編集するだけで対応でき、メンテナンス性が大幅に向上します。
  • 1行ずつクレンジング処理を実行
    values.map(…)という構文で、取得した会社名リストを1行ずつ取り出し、繰り返し処理を行っています。 まず「変換リスト」のルールに従ってname.replaceAll(before, after)で一括置換し、その後に全角の英数字を半角に統一しています。
  • 処理結果をB列に書き出す
    クレンジングが完了した会社名リスト(cleanedValues)を、B3セル以降に一括で書き出しています。

【別解】関数で表記ゆれを統一する方法

GASを使わなくても、スプレッドシートの標準関数だけで同様の処理を実現することも不可能ではありません。 ただし、複数の処理を組み合わせるため、以下の数式のように非常に複雑になってしまいます。ここでは参考としてご紹介します。

以下の数式一つで、「全角英数字の半角化」「変換リストに基づく表記ゆれ統一」の両方を実行しますが、その構造はかなり複雑です。
(※変換リストが100行目まであることを想定しています。必要に応じてA$100やB$100の数字を調整してください。)

=LET(
  hankaku_converted_text, 
    LET(
      s, A2,
      chArr, MAP(SEQUENCE(LEN(s)), LAMBDA(i, MID(s, i, 1))),
      conv, MAP(chArr, LAMBDA(c, IF(REGEXMATCH(c, "[A-Za-z0-9]"), CHAR(UNICODE(c) - 65248), c))),
      TEXTJOIN("", TRUE, conv)
    ),
  TRIM(
    REDUCE(
      hankaku_converted_text, 
      SEQUENCE(ROWS('変換リスト'!A$2:A$100)), 
      LAMBDA(
        current_name, 
        i, 
        LET(
          before_text, INDEX('変換リスト'!A$2:A$100, i), 
          after_text, INDEX('変換リスト'!B$2:B$100, i), 
          IF(
            before_text = "", 
            current_name, 
            SUBSTITUTE(current_name, before_text, after_text)
          )
        )
      )
    )
  )
)
関数でクレンジングしている様子

この数式は、LET関数を使って処理を大きく2段階に分けています。

  1. hankaku_converted_text, LET(…)
    最初のLET関数(内側)で、A2セルの文字列を1文字ずつに分解し、各文字が正規表現”[A-Za-z0-9]”に一致するか(=全角英数字か)を判定します。一致した文字はUNICODE関数で半角に変換し、それ以外の文字はそのままにして、TEXTJOIN関数で再び一つの文字列に戻します。この結果にhankaku_converted_textという名前を付けています。
    全角文字を半角にすることはASC関数でも可能ですが、カタカナも半角に変換されてしまうため、この方法を用いています。
  2. TRIM(REDUCE(hankaku_converted_text, …))
    次に、REDUCE関数を使って、半角化されたhankaku_converted_textを初期値として、「変換リスト」に基づく表記ゆれの統一を繰り返し実行します。最後にTRIMで不要な空白を削除して、最終的な結果を返します。

ご覧の通り、関数だけで実現しようとすると、数式が長大化し、解読やメンテナンスが非常に困難になります。このようなケースでは、処理内容が分かりやすく、管理もしやすいGASの利用がおすすめです。

まとめ

今回は、GASとスプレッドシートを用いて、会社名リストの表記ゆれを統一する方法を解説しました。

  • 本格的に自動化するなら「GAS」:ボタン一つで実行でき、変換ルールの追加・修正もシート編集だけで簡単。
  • 関数を使った代替案:GASを使わずに実現も可能ですが、数式が複雑になるため、基本的にはGASの利用がおすすめ。

データクレンジングは、正確なデータ分析や効率的な営業・マーケティング活動の基盤となる、非常に重要な作業です。これまで手作業で行っていた定型業務は積極的に自動化し、より創造的な業務に時間を使える環境を整えていきましょう。

※Googleサービスは、Google LLC の商標であり、この記事はGoogleによって承認されたり、Google と提携したりするものではありません。