Zoho CRMのデータをBigQuery(ビッグクエリ、Googleのデータ分析基盤)へ毎日送るには、Zoho DataPrep(ゾーホー データプレップ)を使うと、コードを書かずに画面操作だけで連携できます。Zoho DataPrepとは、さまざまなデータの取り込み・整形・出力を自動化できるZohoのデータ準備ツールです。

CRMのデータをBigQueryに集めておくと、大量の履歴をまとめて集計したり、生成AIに分析させたりしやすくなります。当社のセミナー「チャットで聞けば顧客データが返ってくる世界」でも、数万件規模の分析は「CRMのデータを日次でデータ基盤に集め、AIにはそちらを参照させる」構成をお勧めしました。

この記事では、その構成を当社が社内で実際に組んだときの記録をまとめます。事前に書いた構築手順のとおりには進まなかった点が6つありました。同じ構成を検討している方が、同じところでつまずかないように、制約と回避策を順に紹介します。

検証の条件と構成

検証は2026年5月に、当社の社内環境で行いました。お客様のデータは使っていません。

  • データ元:Zoho CRMの見込み客(Leads)モジュール。テスト用に約30件を投入
  • 加工・転送:Zoho DataPrep(毎日3時・日本時間に実行するスケジュールを設定)
  • 出力先:BigQuery(東京リージョンのデータセット)
  • 利用側:Googleスプレッドシートの「コネクテッド シート」(BigQueryのデータをシートから扱う機能)と、Gemini in Sheets

流れを図にすると、次のとおりです。

Zoho CRM(Leads)
  └─ Zoho DataPrep(日次 03:00 JST)
       └─ BigQuery(東京リージョン)
            └─ コネクテッド シート → Gemini in Sheets

結果として、Zoho CRMからBigQuery、スプレッドシートまでの流れは開発なしでつながりました。Gemini in Sheetsに「何件あるか」「流入元の内訳は」「最も多い流入元は」と聞くと、いずれも正しく答えました。ただ、そこに至るまでに次の6点で手戻りがありました。

なお、Zoho DataPrepの仕様のうち公式ヘルプで確かめられたものは「公式ヘルプでは」と書いています。それ以外は、当社が検証した時点の挙動です。画面の表示や仕様は変わることがあります。

Zoho CRMからBigQueryへ日次連携するには?(当社が最終的に採った手順)

CRMのデータをデータ変換ツールで型をそろえ、毎日決まった時刻にデータウェアハウスへ書き込み、分析に使うまでの構成を示した図。

先に、手戻りを反映したあとの手順を示します。

  1. BigQuery側を準備する。 Google Cloudのプロジェクトで請求先アカウントが紐付いていることを確認し、BigQueryのAPIを有効にして、東京リージョンにデータセットを作ります。
  2. Zoho DataPrepでパイプラインを作る。 データ元にZoho CRMを選び、OAuthで接続して、対象モジュール(今回はLeads)を選びます。
  3. 取り込み設定を「全件」にする。 取り込み設定(Import configuration)で、新規・更新分だけでなく全件を取る設定を選びます(理由は制約4)。
  4. 加工ステップで列名と型をそろえる。 日本語の列名は英数字に変え、日付・日時の列は型を明示的に変換します(理由は制約2・3)。
  5. 出力先にBigQueryを追加する。 プロジェクトIDを入れて「Googleでサインイン」し、データセットとテーブルを選びます(理由は制約1)。
  6. 書き込み方法を「上書き」にする。 既存の行を新しい行で置き換える設定にします(理由は制約4)。
  7. まず手動で実行する。 BigQuery側の件数が、Zoho CRMの件数と一致するか確かめます。
  8. スケジュールを設定する。 毎日、時刻、タイムゾーン(Asia/Tokyo)を決め、失敗時の通知先を設定します。
  9. 翌日の自動実行の結果を必ず見る。 手動実行が通っても、自動実行で失敗することがあります(理由は制約3)。

ここからは、6つの制約を1つずつ説明します。

制約1:BigQueryへの接続は「Googleでサインイン」になる

当初の手順書では、BigQuery書き込み用のサービスアカウント(人ではなくシステムが使うGoogle Cloudのアカウント)を作り、そのJSONキーをZoho DataPrepに登録する予定でした。ところが実際の画面には「Googleでサインイン」しか選択肢がなく、用意したサービスアカウントは使えませんでした。

Zoho DataPrepの公式ヘルプ(Export data to Google BigQuery)でも、接続手順はプロジェクトIDを入力して「Sign in with Google」を押す流れで説明されています。サービスアカウントのキーを使う方法は、当社が確認した範囲では書かれていませんでした。

回避策と注意点

  • 担当者個人のGoogleアカウントで接続すると、その人の異動や退職でパイプラインが止まるおそれがあります。本番運用では、連携専用のGoogleアカウントを用意する設計を検討してください。
  • そのアカウントに付ける権限は、書き込み先のデータセットとジョブの実行に必要な範囲に絞ります。
  • 社内のセキュリティ規程で「システム連携はサービスアカウントに限る」と決めている場合は、導入前に情報システム担当と確認しておく必要があります。

制約2:Zoho CRMの日時列は、そのままでは型が合わない

当社の構成では、Zoho CRMの作成日時(Created_Time)などの日時列が、2026-05-22T16:24:22+09:00 のようにタイムゾーン付きのISO 8601形式で取り込まれました。この列をそのままBigQueryに出すと型がそろわず、Zoho DataPrepの加工ステップで yyyy-MM-dd HH:mm:ss の形に変換してから出力しました。

公式ヘルプでも、BigQueryへの出力前に「ターゲットマッチング」(出力先のテーブル構造と照らし合わせる機能)が働き、列の不一致、データ型の不一致、日付・日時の形式の違いなどを事前に検出すると説明されています。

回避策

  • 日付・日時の列は、加工ステップで型(DateまたはDateTime)を明示的に指定します。
  • 時刻をどのタイムゾーンで持つかを、最初に決めておきます。集計の「日」の区切りがずれると、日別の件数が合わなくなります。

制約3:初回の手動実行が通っても、自動実行で型エラーが出る

手動実行は成功したのに、スケジュールでの自動実行で「データ構造の照合に失敗しました」というエラーが出ました。Zoho CRM側の列の型と、BigQueryのテーブル構造が一致しないことが原因でした。

公式ヘルプには、スケジュール実行について次の趣旨の注記があります。最初のスケジュール実行のときだけ新しいテーブルとして扱われ、2回目以降は既存のテーブルとして扱われてターゲットマッチングが適用される、というものです。つまり、初回に自動で作られたテーブル構造と、その後に流れてくるデータの型が少しでも違うと、2回目以降で止まる可能性があります。

回避策

  • 文字列から日付、数値の桁や型の統一など、型変換を加工ステップで明示的に設定します。自動判定に任せないことがポイントです。
  • スケジュールを設定したら、翌日の自動実行結果を必ず確認します。
  • 失敗時に通知が届く設定にしておきます。夜間に止まったまま気づかず、朝の会議で古い数字を見る事態を防ぐためです。

制約4:IDで更新(Upsert)できる?増分取得と上書きを組み合わせると差分しか残らない

最も影響が大きかったのがこの点です。当初は、Zoho CRMから「新規・更新されたデータだけ」を取り込み(増分取得)、BigQueryにはレコードIDをキーにして「あれば更新、なければ追加」する予定でした。

しかし、IDをキーにした更新は画面上で設定できませんでした。代わりに増分取得とテーブルの上書きを組み合わせたところ、BigQueryには前回からの差分だけが残り、それ以前のデータが消えてしまいました。上書きは「テーブルの中身を、今回送ったデータで置き換える」動きだからです。

公式ヘルプを確認すると、Zoho CRMからの取り込み設定には「全件」「新規と更新分のみ」「新規のみ」などの選択肢があります。一方、BigQueryへの書き込み方法として説明されているのは「追加(Append)」と「上書き(Overwrite)」の2つでした(2026年10月に当社確認)。

取り込み設定 書き込み方法 結果
新規と更新分のみ 上書き 差分だけが残り、過去分が消える
新規と更新分のみ 追加 更新されたレコードが重複して増える
全件 追加 実行のたびに全件が積み重なる
全件 上書き 毎回、最新の全件に置き換わる(当社の採用)

回避策

  • 取り込みは「全件」、書き込みは「上書き」にそろえます。毎日、その時点のZoho CRMの写しがBigQueryにできる形です。
  • 件数が多い場合は、分析に使う項目や期間に絞ってから出力します。公式ヘルプでは1回の取り込み上限は600万件とされていますが、実際に日次で回せる量は項目数や他の連携との兼ね合いで変わります。
  • 増分取得を使う場合、公式ヘルプには「新しいデータがないときに既存データを使う」設定を外していると、取り込みが失敗してパイプライン全体が失敗する、という注記もあります。設定の組み合わせは慎重に確かめてください。

制約5:コネクテッド シートのままでは、Gemini in Sheetsが使えなかった(2026年5月の検証時点)

BigQueryのテーブルをスプレッドシートのコネクテッド シートで開き、そのままGemini in Sheetsに質問しようとすると、「このシート形式はまだサポートされていません」と表示されました。Googleの公式情報では確かめられておらず、現在は対応が進んでいる可能性があります。使う前に、現行の画面で一度試してください。

回避策

  • コネクテッド シートから、データを通常のシートに抽出してからGeminiに質問します。抽出後のシートでは、件数・内訳・最多値の3問すべてに正しく答えました。
  • 利用者向けの手順書に「抽出してから質問する」と明記しておきます。手順を知らない人が接続シートのまま使うと、エラーで止まってしまいます。

あわせて、Zoho DataPrepの実行が終わる前に「今日の数字」を生成AIに聞くと、古い値を「更新済み」として答えた例も社内検証で確認しています。質問はデータ更新の完了後に行う、という運用ルールも必要です。

制約6:請求先アカウントが未設定だと、AI分析のAPIが使えなかった(2026年5月の検証時点)

BigQueryに入れたデータを、Google CloudのConversational Analytics API(BigQueryのデータに自然文で質問できる仕組み)で分析しようとしたところ、請求先アカウント(Billing)を紐付けていないプロジェクトでは、請求先を確認するよう求めるエラーで使えませんでした。この要件もGoogleの公式情報では確かめられていないため、現行の挙動を確認してから設計してください。当社は、請求先を設定済みの別プロジェクトに出力先を切り替え、Zoho DataPrepからデータを入れ直しました。

回避策

  • 生成AIでの分析まで見据えるなら、最初から請求先を設定したプロジェクトでパイプラインを組みます。
  • 後からプロジェクトを移すと、データセットの作り直しとZoho DataPrepの出力先の変更が必要になります。

計画と実際の違い

最後に、事前の手順書と、実際に動いた構成の違いをまとめます。

項目 当初の計画 実際に採った形
BigQueryへの認証 サービスアカウントのJSONキー Googleアカウントでのサインイン
取り込み 新規・更新分のみ 全件
書き込み レコードIDで更新・追加 上書き
日時の列 そのまま出力 加工ステップで型を変換
動作確認 手動実行で完了 翌日の自動実行まで確認
GCPプロジェクト 検証用プロジェクト 請求先設定済みのプロジェクト

どれも、手動で一度動かしただけでは見えにくい点です。とくに制約3と4は、初日は正しく見えて、数日後に数字が合わないことで気づくたぐいの問題です。

まとめ

  • Zoho DataPrepを使えば、Zoho CRMからBigQueryへの日次連携は画面操作だけで組めます。
  • 認証は「Googleでサインイン」になるため、連携専用アカウントと権限の設計を先に決めます。
  • 取り込みは全件、書き込みは上書きにそろえると、差分だけが残る事故を防げます。
  • 日付・数値の型は加工ステップで明示的に変換し、翌日の自動実行まで確認します。
  • 生成AIで分析する段階では、通常シートへの抽出や請求先の設定といった前提も確かめておきます。

Zoho DataPrepそのものの基本操作は、「ZohoDataPrepでデータをクレンジング:CRM統合までの完全ガイド」でも紹介しています。DataPrepを使わずにAPIで直接つなぐ考え方は「Zoho CRM と他ツールのAPI連携で業務効率を最大化する」をご覧ください。Zoho CRMのデータを分析基盤や生成AIとつなぐ構成を検討している方は、Zoho CRM×AI連携カスタマイズサービスからお気軽にご相談ください。

よくある質問

Zoho CRMからBigQueryへの連携に、プログラムは必要ですか。

Zoho DataPrepを使う場合、取り込み・加工・出力・スケジュール設定まで画面操作で組めます。当社の検証でも、Zoho CRMからBigQueryまでの流れはコードを書かずに構築しました。ただし、日付の型変換などの加工ステップは最初に1つ追加が必要です。

BigQueryへの書き込みは、レコードIDで更新(Upsert)できますか。

当社が確認したZoho DataPrepの公式ヘルプ(BigQueryへの出力)では、既存テーブルへの書き込み方法として「追加(Append)」と「上書き(Overwrite)」の2つが説明されています。当社の検証でも、IDをキーにした更新は画面上で設定できなかったため、全件取得+上書きの構成にしました。

毎日全件を取り直すと、件数が多いときに困りませんか。

件数が増えるほど、取り込みにかかる時間やAPIの利用量は増えます。公式ヘルプでは1回の取り込み上限が600万件とされていますが、実際に何件まで日次で回せるかは、項目数やプラン、他の連携との兼ね合いで変わります。件数が多い場合は、取り込む項目や期間を絞る設計を先に検討してください。

BigQueryに入れたデータを、Gemini in Sheetsで分析できますか。

当社が検証した2026年5月時点では、BigQueryに接続したシート(Connected Sheets)のままではGemini in Sheetsが使えず、データを通常のシートへ抽出してから質問する必要がありました。抽出後のシートでは、件数や内訳を正しく答えることを確認しています。