顧客データを自動で名寄せ・整理!重複を防いで正確な情報を管理!作り方を簡単に説明
営業、マーケティング、カスタマーサポート…ビジネスのあらゆる場面で、顧客データは最重要資産です。しかし、複数の部署がそれぞれ顧客情報を管理していたり、様々なシステム(CRM、Excel、スプレッドシートなど)にデータが散らばっていたりすると、どうなるでしょうか?
「同じお客様なのに、システムAとシステムBで連絡先が違う…」
「重複した顧客データがたくさんあって、誰が担当か分からない…」
「お客様に同じメールを何通も送ってしまった…」
こんな経験、ありませんか? 顧客データが重複していたり、古かったりすると、顧客への誤ったアプローチにつながるだけでなく、分析の精度が落ち、ビジネスチャンスを逃すことにもなりかねません。手作業での名寄せやデータクレンジングは、膨大な時間と手間がかかり、しかも完璧に行うのは非常に難しいものです。
しかし、もし、AIが顧客の名前、メールアドレス、電話番号、会社名といった情報から、自動で重複を検知し、バラバラの情報を統合して、一つの正確な顧客データにまとめてくれたら? そして、その顧客データを常に最新の状態で一元管理できるようになるとしたら、どうでしょう?
Googleのノーコード開発ツール「AppSheet」と、最先端の生成AI「Gemini」の連携は、この「顧客データの名寄せ・整理」を誰でも簡単に実現します。プログラミングの知識は一切不要。AIが膨大な顧客データの中から重複を見つけ出し、最適な形で統合することで、顧客管理の精度を劇的に向上させ、顧客へのよりパーソナライズされたアプローチを可能にしてくれるのです。
なぜ今、顧客データの名寄せ・整理にAIが不可欠なのか?その課題とAIの価値
顧客データは、ビジネスにおける意思決定の根幹をなす情報です。しかし、その管理には、多くの企業が共通の課題を抱えています。
「データの重複」と「不整合」問題
複数のシステムや部署で顧客情報を管理していると、同じ顧客の情報が重複して登録されたり、異なる情報(住所、電話番号、担当者など)が入力されたりする「データ不整合」が発生しやすくなります。例えば、「株式会社〇〇」と「(株)〇〇」のように表記が異なるだけでも、システム上は別データとして扱われてしまいます。
「顧客情報の鮮度」低下問題
顧客の担当者変更、住所移転、電話番号変更など、顧客情報は常に変化します。これらの変更がタイムリーにシステムに反映されないと、顧客への連絡が滞ったり、誤った情報に基づいてアプローチしてしまったりするリスクが生じます。手動での更新は追いつかないのが現状です。
「顧客理解」の妨げと「パーソナライズ」の限界
顧客データが散在していたり、重複していたりすると、顧客一人ひとりの全体像を把握することが困難になります。顧客の購買履歴、問い合わせ履歴、Webサイトでの行動などがバラバラに管理されていると、真のニーズや課題を見抜くことができず、結果としてパーソナライズされたアプローチが難しくなります。
「分析の精度」低下と「ビジネス機会」の損失
不正確な顧客データは、売上分析、マーケティング効果測定、顧客セグメンテーションといったデータ分析の精度を著しく低下させます。間違ったデータに基づいて戦略を立ててしまうと、無駄なコストが発生したり、大きなビジネス機会を損失したりする可能性があります。
ここに、Gemini in AppSheetが大きな解決策を提示します。AIが顧客の様々な情報を総合的に判断し、重複データを自動で検知・統合することで、上記の問題を根本から解決し、常に正確でクリーンな顧客データを維持することを可能にするのです。
顧客データをAIが自動で名寄せ・整理するアプリの作り方:Google Geminiをフル活用!
それでは、実際にGoogle Gemini in AppSheetを活用して、顧客データをAIが自動で名寄せ・整理し、重複を防いで正確な情報を管理するアプリの具体的な作り方をステップバイステップで解説していきます。
このシステムを構築するには、まず未整理の顧客データを入力する場所を設け、AIがそれを分析し、名寄せされた「正規顧客データ」として格納する仕組みを構築します。
アプリの「土台」となる顧客データを準備する
AIが名寄せ・整理を行うためには、顧客の様々な情報(氏名、会社名、連絡先など)が必要です。ここでは、Google スプレッドシートをデータソースとして活用します。
ステップ1:Google スプレッドシートで「入力用顧客リスト」と「正規顧客マスタ」を定義する
Google スプレッドシートを開き、新しいシートを作成します。顧客情報を取り込むための「入力用」シートと、AIが名寄せ・整理した後の「正規」の顧客データを格納するシートの2種類を定義します。
例:入力用顧客リスト シート (外部からインポートされるデータや手動入力されるデータ)
| 入力ID | 氏名(入力) | 会社名(入力) | メールアドレス(入力) | 電話番号(入力) | 住所(入力) | その他情報(入力) | 処理ステータス | 正規顧客ID(紐付け) |
- 入力ID: 各入力レコードを一意に識別するID。
- 氏名(入力) / 会社名(入力) / メールアドレス(入力) / 電話番号(入力) / 住所(入力) / その他情報(入力): AIが名寄せ・整理を行う対象となる、様々な形式で入力される顧客情報。
- 処理ステータス: AIによる処理状況(例: 未処理, AI処理中, 重複の可能性あり, 名寄せ完了)。
- 正規顧客ID(紐付け): 名寄せの結果、どの「正規顧客」と紐付けられたかを示すID。
例:正規顧客マスタ シート (AIが名寄せ・整理した最終的な顧客データ)
| 正規顧客ID | 氏名 | 会社名 | メールアドレス | 電話番号 | 住所 | 統合された情報 | 最終更新日 |
- 正規顧客ID: 名寄せされた顧客を一意に識別するID。
- 氏名 / 会社名 / メールアドレス / 電話番号 / 住所: 名寄せ・整理された正確な顧客情報。
- 統合された情報: AIが名寄せ時に統合した、その他の情報や備考。
- 最終更新日: 正規データが最終更新された日時。
ステップ2:AppSheetで新しいアプリを作成する
AppSheetのウェブサイト(appsheet.com)にアクセスし、Googleアカウントでログインします。「+ Make a new app」から「Start with your own data」を選択し、アプリの名前(例:「顧客名寄せAI」)とカテゴリを設定します。
データソースの選択画面で、先ほど準備したGoogle スプレッドシートを選択し、AppSheetが「入力用顧客リスト」と「正規顧客マスタ」をテーブルとして認識するように設定します。「Select」をクリックし、AppSheetエディタでアプリの基本的な形を生成します。
Google Geminiを組み込む!顧客データの「重複検知」と「名寄せ・統合」のAI Taskを設定する
Google Geminiの「AI Task」をAppSheetのAutomationに組み込む核心部分です。AIが新しい顧客データ(入力用顧客リスト)を分析し、既存の正規顧客マスタとの重複を検知し、必要に応じて統合する仕組みを構築します。
ステップ1:AIによる「重複可能性の判定」Automationを設定する
- AppSheetエディタの左側メニューから「Automation」を選択し、「+ New Bot」をクリックして新しいボットを作成します(例:「顧客重複判定」)。
- Event(いつ動かすか):
- Event Type: 「Data change」
- Table: 「入力用顧客リスト」テーブルを選択します。
- Change Type: 「Adds only」(新しい顧客データが追加されたとき)。
- これで、新しい顧客情報が入力されるたびに、この自動化プロセスが開始されます。
- Process(何をするか):
- ステップ1:「AI Task – 重複可能性の判定」
- 「+ Add a step」をクリックし、「Run a task」を選択します。
- Task Type: 「AI Task」を選び、その中の「Generate content」を選択します。
- Prompt for AI: ここに、AIに新しい顧客データが既存の正規顧客と重複している可能性を判定させるプロンプトを記述します。このステップでは、既存の正規顧客マスタから、類似性の高い上位数件のデータをAIに渡す工夫が必要です。これは、別のAutomationステップで正規顧客データを取得し、それをプロンプトに含める形で実現します。
あなたは、顧客データの名寄せアシスタントです。 以下の新規顧客データが、既存の正規顧客データと重複している可能性が高いかどうかを判断してください。 重複の可能性が高い場合は「重複の可能性あり」、低い場合は「重複なし」と回答してください。 重複の判断は、氏名、会社名、メールアドレス、電話番号の類似性に基づいて行い、特にメールアドレスまたは電話番号が完全に一致する場合は重複と判断してください。 ### 新規顧客データ ### 氏名: [氏名(入力)] 会社名: [会社名(入力)] メールアドレス: [メールアドレス(入力)] 電話番号: [電話番号(入力)] 住所: [住所(入力)] ### 既存の類似正規顧客データ(参考情報として提供) ### [ここに、類似性のある既存の正規顧客データを数件、箇条書きで記述します。例: - 氏名: 山田 太郎, 会社名: (株)ABC, メール: yamada@abc.com, 電話: 090-XXXX-YYYY - 氏名: 山田 타로, 会社名: 株式会社エービーシー, メール: yamada.t@abc.com, 電話: 090-XXXX-ZZZZ ]- ポイント: プロンプト内の「### 既存の類似正規顧客データ ###」の部分は、このAI Taskの前に別のステップを追加し、「正規顧客マスタ」から氏名、会社名、メールアドレス、電話番号などが類似するレコードを
SELECT関数やFIND_ROW関数で検索し、その結果を文字列として結合してプロンプトに渡す工夫が必要です。例えば、CONCATENATE(SELECT(正規顧客マスタ[氏名]&", "&正規顧客マスタ[会社名]&"...", [正規顧客ID] = LOOKUP([正規顧客ID], "入力用顧客リスト", "正規顧客ID")))のように複雑な式を組む必要があります。
- ポイント: プロンプト内の「### 既存の類似正規顧客データ ###」の部分は、このAI Taskの前に別のステップを追加し、「正規顧客マスタ」から氏名、会社名、メールアドレス、電話番号などが類似するレコードを
- Save the generated content to these columns: AIが生成した判定結果を保存するカラムとして、「処理ステータス」を選択します。
- ステップ1:「AI Task – 重複可能性の判定」
ステップ2:AIによる「重複解消・名寄せ」のAutomationを設定する(人間による確認後)
このステップは、AIが「重複の可能性あり」と判定したデータを、人間が確認・承認した後に実行されるフローです。人間が「これは重複だ」と判断し、正規顧客IDを紐付けた場合に、AIが情報の統合を行います。
- AppSheetエディタの左側メニューから「Automation」を選択し、「+ New Bot」をクリックして新しいボットを作成します(例:「顧客データ名寄せ・統合」)。
- Event(いつ動かすか):
- Event Type: 「Data change」
- Table: 「入力用顧客リスト」テーブルを選択します。
- Change Type: 「Updates only」。
- Condition: 「正規顧客ID(紐付け)」カラムに値が入力されたことをトリガーとします。
ISNOTBLANK([正規顧客ID(紐付け)]) AND ISCHANGED([正規顧客ID(紐付け)])
- Process(何をするか):
- ステップ1:「AI Task – 情報の統合」
- 「+ Add a step」をクリックし、「Run a task」を選択します。
- Task Type: 「AI Task」を選び、その中の「Generate content」を選択します。
- Prompt for AI: ここに、AIに既存の正規顧客データと新しい入力データを統合させるプロンプトを記述します。矛盾する情報がある場合は、より新しい情報や、より詳細な情報を優先するように指示します。
あなたは、重複する顧客データを名寄せ・統合するAIアシスタントです。 以下の「既存の正規顧客データ」と「新規入力データ」を比較し、最も正確で網羅的な情報を統合して抽出してください。 特に、メールアドレス、電話番号、住所は最新の情報を優先し、統合された情報としてリストアップしてください。 ### 既存の正規顧客データ ### 氏名: [正規顧客ID(紐付け)].[氏名] 会社名: [正規顧客ID(紐付け)].[会社名] メールアドレス: [正規顧客ID(紐付け)].[メールアドレス] 電話番号: [正規顧客ID(紐付け)].[電話番号] 住所: [正規顧客ID(紐付け)].[住所] 統合された情報: [正規顧客ID(紐付け)].[統合された情報] ### 新規入力データ ### 氏名: [氏名(入力)] 会社名: [会社名(入力)] メールアドレス: [メールアドレス(入力)] 電話番号: [電話番号(入力)] 住所: [住所(入力)] その他情報: [その他情報(入力)] 出力形式: 統合氏名: [統合された氏名] 統合会社名: [統合された会社名] 統合メールアドレス: [統合されたメールアドレス] 統合電話番号: [統合された電話番号] 統合住所: [統合された住所] 追加情報: [新規入力データから追加された特記事項や補足情報][正規顧客ID(紐付け)].[カラム名]のように記述することで、紐付けられた正規顧客マスタの情報を参照できます。
- Save the generated content to these columns: AIが生成した統合結果を一時的な変数に保存します(例:
IntegratedData)。
- ステップ2:「正規顧客マスタの更新」
- 「+ Add a step」をクリックし、「Data: Set the values of some columns in a row」を選択します。
- Table: 「正規顧客マスタ」テーブルを選択します。
- Row:
[正規顧客ID(紐付け)]で指定された行。 - Set these columns:
- 氏名:
[IntegratedData].[統合氏名] - 会社名:
[IntegratedData].[統合会社名] - メールアドレス:
[IntegratedData].[統合メールアドレス] - 電話番号:
[IntegratedData].[統合電話番号] - 住所:
[IntegratedData].[統合住所] - 統合された情報:
[IntegratedData].[追加情報](既存の統合された情報に追記するか、置き換えるかは要検討) - 最終更新日:
NOW()
- 氏名:
- ステップ3:「入力用顧客リストのステータス更新」
- 「+ Add a step」をクリックし、「Data: Set the values of some columns in this row」を選択します。
- Set these columns:
- 処理ステータス:
"名寄せ完了"
- 処理ステータス:
- ステップ1:「AI Task – 情報の統合」
これで、AIが顧客データから重複を検知し、人間による確認・承認を経て、正規顧客マスタに情報が統合される仕組みが完成します。
人間による「重複確認と紐付け」のフローを設定する
AIは重複の可能性を提示しますが、最終的な名寄せの判断と紐付けは人間が行うことが重要です。
ステップ1:AppSheetアプリで重複候補の確認ビューを作成する
- AppSheetエディタの「UX」メニューから、「+ New view」をクリックします。
- View name: 「重複確認リスト」
- For this data: 「入力用顧客リスト」テーブルを選択します。
- View type: 「Table」または「Deck」を選択し、一覧性を高めます。
- View options:
- Sort by: 「処理ステータス」で並び替え、
重複の可能性ありのデータが上に来るように設定します。 - Filter:
[処理ステータス] = "重複の可能性あり"と設定し、確認が必要なデータのみを表示します。
- Sort by: 「処理ステータス」で並び替え、
- このビューで、各入力レコードの詳細画面に進むと、「正規顧客ID(紐付け)」カラムが表示されるように設定し、
Refタイプにして「正規顧客マスタ」を参照できるようにします。これにより、手動で正規顧客を選んで紐付けられます。
ステップ2:重複が特定された場合の「名寄せ・統合」アクションを設定する
- AppSheetエディタの「Behaviors」メニューから「+ New action」をクリックします。
- Action name: 「この顧客と名寄せする」
- Do this: 「Data: Set the values of some columns in this row」を選択。
- For a record of this table: 「入力用顧客リスト」
- Set these columns:
- 正規顧客ID(紐付け):
USER_SELECTED_CUSTOMER_ID(このアクションがトリガーされた時にユーザーが選択した正規顧客ID) - 処理ステータス:
"重複承認済み" - 表示条件:
ISBLANK([正規顧客ID(紐付け)]) AND [処理ステータス] = "重複の可能性あり"(まだ紐付けられておらず、重複候補の場合にのみ表示)
- 正規顧客ID(紐付け):
ステップ3:名寄せ不要な場合の「新規顧客として登録」アクションを設定する
- AppSheetエディタの「Behaviors」メニューから「+ New action」をクリックします。
- Action name: 「新規顧客として登録する」
- Do this: 「Data: Add a new row to another table using values from this row」を選択。
- To this table: 「正規顧客マスタ」
- Set these columns:
- 氏名:
[氏名(入力)] - 会社名:
[会社名(入力)] - メールアドレス:
[メールアドレス(入力)] - 電話番号:
[電話番号(入力)] - 住所:
[住所(入力)] - 統合された情報:
[その他情報(入力)] - 最終更新日:
NOW()
- 氏名:
- And then: 「Data: Set the values of some columns in this row」を選択し、「入力用顧客リスト」の現在の行の「処理ステータス」を
"新規登録済み"に更新し、「正規顧客ID(紐付け)」に[_ADDED_ROW_ID](新しく追加された正規顧客のID)を設定します。 - 表示条件:
ISBLANK([正規顧客ID(紐付け)]) AND [処理ステータス] = "重複の可能性あり"(まだ紐付けられておらず、重複候補の場合にのみ表示)
これにより、人間が重複候補を確認し、「名寄せ」または「新規登録」の判断を下せるようになります。
アプリを実際に使ってみる
- アプリを保存し、デプロイします。
- 新しい顧客データを「入力用顧客リスト」に登録します。
- 例えば、
- 1件目: 氏名: 山田太郎, 会社名: ABC株式会社, メール: yamada@abc.com, 電話: 090-1111-2222
- 2件目: 氏名: やまだたろう, 会社名: (株)ABC, メール: yamada@abc.com, 電話: 090-1111-2222 (1件目とほぼ同じ)
- 3件目: 氏名: 山田 花子, 会社名: XYZ商事, メール: hanako@xyz.com, 電話: 080-3333-4444
- 例えば、
- データを保存すると、バックグラウンドでGeminiのAI Task(ステップ2の「顧客重複判定」ボット)が実行され、「処理ステータス」が自動で「重複の可能性あり」または「重複なし」に更新されます。
- アプリの「重複確認リスト」ビューを開くと、「重複の可能性あり」と判定されたデータが表示されます。
- 重複候補の詳細画面で、該当する「正規顧客ID」をドロップダウンから選択し、「この顧客と名寄せする」アクションをタップします。
- または、新規顧客と判断し、「新規顧客として登録する」アクションをタップします。
- アクションが実行されると、AI(ステップ2の「顧客データ名寄せ・統合」ボット)が情報を統合し、「正規顧客マスタ」が更新されるか、新しいレコードが追加されます。同時に、「入力用顧客リスト」の「処理ステータス」が「名寄せ完了」または「新規登録済み」に変わります。
これで、手動での名寄せ作業の手間から解放され、AIが重複を検知し、人間による最終判断を経て、常にクリーンで正確な顧客データが維持されるようになりました!
Googleの機能連携で、顧客管理戦略をさらに強化する!
この顧客データ名寄せ・整理アプリは、Googleの他の強力な機能と連携することで、その価値を何倍にも高めることができます。
Google Looker Studio (旧 Google Data Studio) との連携:顧客データの健全性レポート
- ダッシュボード作成: AppSheetの「入力用顧客リスト」と「正規顧客マスタ」データをGoogle スプレッドシート経由でGoogle Looker Studioに連携させ、顧客データの健全性(重複状況、更新頻度など)をリアルタイムで可視化するダッシュボードを構築します。
- ダッシュボードの表示例:
- 月ごとの新規顧客登録数 vs. 名寄せされた顧客数
- 重複率の推移
- AIが「重複の可能性あり」と判定した未処理の件数
- 名寄せによって統合された情報の種類(例: 電話番号が更新された件数、住所が補完された件数)
- 各入力チャネル(例: Webフォーム, 展示会リスト)からのデータの品質比較
- ダッシュボードの表示例:
- データ品質改善のモニタリング: このダッシュボードを見ることで、顧客データ管理のボトルネックを特定し、データ入力プロセスや名寄せルールの改善に役立てることができます。
Gmail / Google Chatとの連携:重複検知時のアラートと確認依頼
重複の可能性が高いデータが検知された場合、関係者に迅速に通知し、確認を促します。
- Automationの設定: 「入力用顧客リスト」の「処理ステータス」が「重複の可能性あり」になった場合に、Gmailで担当者(例: データ管理責任者、営業マネージャー)にアラートメールを送信したり、Google Chatの特定のチャネルに通知を投稿したりするAutomationを設定します。
- 通知内容: 該当顧客の入力データと、AIが提示した重複候補の概要、そしてAppSheetアプリの「重複確認リスト」へのリンクを含めることで、迅速な確認を促します。
- 例:
- Event: 「入力用顧客リスト」の「処理ステータス」が「重複の可能性あり」になったとき。
- Process:
- 「Run a task」で「Send an email」を選択し、担当者に通知。
- 件名:
【要確認】顧客データ重複の可能性:[氏名(入力)]様 - 本文:
以下の顧客データに重複の可能性があります。AppSheetアプリで内容をご確認の上、名寄せまたは新規登録の対応をお願いします。詳細: <<LINKTOROW([入力ID], "重複確認リスト_Detail")>>
Google Formsとの連携:顧客データ収集の入口を整備
外部からの顧客データ(アンケート回答、イベント参加者リストなど)をGoogle Formsで収集し、そのデータをAppSheetの「入力用顧客リスト」に直接連携させることで、データ取り込みのプロセスを効率化します。
Google Formsの回答は自動的にGoogle スプレッドシートに保存されるため、そのスプレッドシートをAppSheetの「入力用顧客リスト」テーブルとして設定すれば、AIによる名寄せプロセスの起点とすることができます。
Google Drive / Docsとの連携:顧客情報の詳細履歴と補足資料の管理
名寄せされた正規顧客データに、追加のメモや契約書などのファイルを紐付けて管理します。
- ファイルアップロード機能: 「正規顧客マスタ」テーブルに、Google Driveにファイルをアップロードできる
FileまたはImageタイプのカラムを追加します。これにより、顧客とのやり取りの記録や、関連資料を顧客ごとに一元管理できます。 - 顧客別フォルダの自動作成: 顧客IDに基づいてGoogle Drive上にフォルダを自動生成し、そこにファイルを保存するようにすれば、情報が整理され、管理が容易になります。
- 例:
- Event: 「正規顧客マスタ」に新しいレコードが追加されたとき。
- Process:
- 「Run a task」で「Google Drive: Create a folder」を選択。
- Folder Name:
[氏名]_[正規顧客ID] - Parent Folder ID: 親フォルダのID。
- 生成されたフォルダIDを正規顧客マスタの「顧客フォルダID」カラムに保存。
- 今後ファイルがアップロードされる際には、この「顧客フォルダID」を参照してファイルを保存。
まとめ
Google Gemini in AppSheetを活用した顧客データの名寄せ・整理システムは、単なるデータクレンジングの自動化に留まりません。それは、顧客データを企業の「真の資産」として活用し、顧客理解を深め、よりパーソナライズされた顧客体験を提供することで、ビジネスの成長を加速するための、極めて強力な戦略的ツールです。
このシステムを導入することで、以下の大きなメリットが享受できます。
- 顧客データの正確性と鮮度の向上: AIが自動で重複を検知・統合するため、常にクリーンで最新の顧客データを維持できます。ヒューマンエラーのリスクが大幅に減少します。
- 顧客理解の深化: 顧客一人ひとりの情報を網羅的に把握できるようになるため、真のニーズや行動パターンを深く理解し、より効果的な営業・マーケティング戦略を立案できます。
- 顧客体験の向上とロイヤルティ強化: 誤った情報によるアプローチや重複メール送信がなくなるため、顧客は「自分のことを理解してくれている」と感じ、顧客満足度と長期的なロイヤルティが高まります。
- データ分析の精度向上: 正確なデータに基づく分析が可能になるため、売上予測、マーケティング効果測定、顧客セグメンテーションといった分析の精度が飛躍的に向上し、データドリブンな意思決定を促進します。
- コスト削減と効率化: 手作業での名寄せやデータクレンジングにかかる時間と人件費を大幅に削減し、営業・マーケティング部門のリソースをより付加価値の高い業務に集中させることができます。
プログラミングの知識は必要ありません。Google GeminiのAIの知能と、AppSheetのノーコード開発の柔軟性が一体となることで、あなたのビジネスは、これまでとは比べ物にならないほど顧客データを活用し、競争優位性を確立できるようになるでしょう。

