営業・CRM

GmailのCRMパイプラインデータをGoogle Sheetsへ連携する方法

ModelMonkey2026年9月2日読了約 2 分

この違いは重要です。たとえば、1,200万円の商談が「Discovery」から「Proposal」、さらに「Legal」へ進んだ場合、活動履歴をそのまま集計すると3回、場合によっては4回カウントされます。パイプラインのグラフは見栄えよく増えますが、「CRMではオープンパイプラインが4,200万円なのに、シートでは5,800万円になっているのはなぜですか」と聞かれた瞬間に問題が明らかになります。

2026年9月時点で、Google Sheetsは1つのスプレッドシートにつき最大1,000万セルに対応しています。詳しくはGoogleのファイルサイズ制限をご覧ください。多くの場合、最初に問題になるのは容量ではありません。データの粒度です。

Gmail CRMのパイプラインデータをGoogle Sheetsへ適切な粒度で連携する

Streak、Copper、NetHuntなど、Gmailと連携するCRMでは、メールの文脈を案件管理に活用できます。一方、ファイナンス部門が必要とするのは、予測の前提と結び付く、日付付きで再現可能な案件パイプラインのビューです。

実務で使いやすい方法は3つあります。

方法Sheetsに取り込む内容適した用途ファイナンス上のリスク
CSVエクスポートある時点の案件一覧月次決算、四半期の取締役会資料エクスポート後に古くなる
ノーコードの定期同期更新された案件テーブル週次の予測更新項目マッピングが気付かないうちにずれる
APIによる差分取得新規・変更レコードのみCRMレコードが50,000行を超える大規模モデル技術面の担当者が必要

中堅企業のFP&Aチームであれば、ノーコードの定期同期が適切な中間案になることが多いでしょう。Sheets内にソーステーブルを保持しつつ、アナリストが小規模なデータ基盤の保守担当になる事態を避けられます。

StreakのCRMエクスポートについては、公式のエクスポートガイドで確認できます。Copperにもレコードのエクスポートに関する公式ガイドがあります。キーには必ずCRMの案件IDを使用してください。会社名は、会社名変更や同一企業の複数案件によって重複する可能性があるため、キーには適しません。

突合まで行うノーコードのStreakパイプライン同期

ここでは、Streakにアクティブな商談が186件あり、CRM上のオープンパイプラインが4,200万円と表示されている場合に、四半期の取締役会資料を作成する手順を紹介します。

1. StreakのエクスポートデータをStreak_Exportに取り込む

次の項目をStreak_Exportというタブにエクスポートまたは同期します。

Deal IDDeal NameStageOwnerAmountClose DateUpdated AtExported At
STK-1042Northstar ExpansionProposalA. Chen2,400万円2026年12月31日2026年9月1日 14:122026年9月2日 08:00

このタブは変更せず、そのまま残してください。ここはダッシュボードではなく、証跡を保管する場所です。同期ツールが行を追加していく形式でも問題ありません。現在の状態を整える処理は、次のタブで行います。

2. 案件ごとに1行だけ残すDeals_Currentを作成する

エクスポートデータをUpdated Atの新しい順に並べ替え、案件IDごとに最初のレコードを使用します。Streak_Exportの案件IDがA列、データがH列までに入っている場合、次の数式で案件ごとの最新行を取得できます。

=ARRAYFORMULA(
  VLOOKUP(
    UNIQUE(FILTER('Streak_Export'!A2:A,'Streak_Export'!A2:A<>"")),
    SORT('Streak_Export'!A2:H,7,FALSE),
    {1,2,3,4,5,6,7,8},
    FALSE
  )
)

CRMにアクティブな案件が186件あるなら、ダッシュボードにも186行あるべきです。「Legal」への更新で新しいレコードが作られたために、247行になることは避けなければなりません。

3. 管理用テーブルStage_Mapを作成する

予測上の扱いは、CRMのエクスポートデータとは分けて管理します。営業担当者が金曜日の午後に「Proposal」を「Proposal Sent」に変更したからといって、予測上の分類まで変わるべきではありません。表示名の変更と、ファイナンス上の判断は切り分けましょう。

CRM StageInclude in Open PipelineProbabilityForecast Bucket
DiscoveryTRUE15.0%Upside
ProposalTRUE45.0%Pipeline
LegalTRUE75.0%Commit
Closed WonFALSE100.0%Booked
Closed LostFALSE0.0%Exclude

Deals_Currentに、確度、予測バケット、オープンパイプライン対象フラグの参照列を追加します。そのうえで、ダッシュボードの合計をハードコードするのではなく、日付を条件にした数式でP&Lへ計上します。

=SUMIFS('P&L'!C:C, 'P&L'!B:B, ">=" & Assumptions!$B$3)

この数式はCRMの処理を行っているのではありません。Assumptionsタブを基準に、定義した期間のP&Lを取得するという、ファイナンスモデル本来の役割を担っています。

4. QUERYでダッシュボードを作成する

Pipeline_Dashboardで、現在のオープンパイプラインをステージ別に集計します。

=QUERY(
  {Deals_Current!C2:C,Deals_Current!E2:E,Deals_Current!J2:J},
  "select Col1, sum(Col2)
   where Col3 = TRUE
   group by Col1
   label sum(Col2) 'Open Pipeline'",
  0
)

ここでは、C列がステージ、E列が金額、J列がStage_Mapから取得したInclude in Open Pipelineフラグです。これにより、受注済みの売上や、現在の案件ではない古いレコードを誤って含めずに、ステージ別のグラフを作成できます。

加重パイプラインは次の式で計算できます。

=SUMPRODUCT(Deals_Current!E2:E,Deals_Current!H2:H,Deals_Current!J2:J)

オープンパイプラインが4,200万円、加重パイプラインが1,600万円であれば、予測について有意義な議論ができます。4,200万円をそのまま予想売上として報告している場合は、受注確度と売上計上時期を改めて確認しましょう。

5. 資料を共有する前に突合セルを追加する

CRM_Controls!B2に、CRMが報告するオープンパイプラインの合計を入力します。エクスポートと同じ更新時刻のStreakのパイプライン画面から転記するとよいでしょう。

=IF(
  ABS(SUM(FILTER(Deals_Current!E2:E,Deals_Current!J2:J=TRUE))-CRM_Controls!$B$2)<0.01,
  "TIES",
  "BREAK: "&TEXT(
    SUM(FILTER(Deals_Current!E2:E,Deals_Current!J2:J=TRUE))-CRM_Controls!$B$2,
    "$#,##0"
  )
)

緑色のTIESは、単なる装飾ではありません。同じ時点のCRMとダッシュボードで、オープンパイプラインの対象と金額が一致していることを示します。さらに案件数の突合も追加してください。金額が一致していても、金額ゼロの案件が抜けていたり、重複した2件が偶然相殺されていたりする可能性があります。

API連携ではなくノーコードのGmail CRM同期を使うケース

モデルの更新が週次で、CRMのアクティブ案件が概ね5,000件未満、かつ必要な項目が安定している場合は、ノーコード同期が適しています。対象項目は、案件ID、金額、ステージ、担当者、クローズ予定日、更新日時です。

日次スナップショット、ステージ滞留期間の履歴、または80,000行規模のエクスポートが必要で、ライブのワークブックが重くなる場合は、API連携やデータウェアハウスからの取り込みを検討してください。GoogleのApps Scriptのクォータは公式ドキュメントで公開されています。ただし、クォータを守ることと、モデルの信頼性は同じではありません。履歴を上書きする自動取得は、予測の入力としては不適切です。

ファイナンスのパイプラインモデルには、1つではなく2つのデータセットが必要です。予測にはDeals_Currentを使い、コンバージョン率、滞留期間、予測精度の分析にはPipeline_Historyを使います。両方を混在させると、どちらの用途にも適さないテーブルになってしまいます。

GoogleのQUERY関数については、Google Sheetsの関数リファレンスで確認できます。数式で処理内容を追跡でき、監査もしやすいため、取締役会向けのサマリーに適しています。元のレコードは別の場所で管理してください。

よくある質問

Gmail CRMのパイプラインデータをGoogle Sheetsへ連携する最も簡単な方法は?

CRMのCSVエクスポート、またはノーコードの定期同期を使い、まずStreak_Exportのようなステージング用タブへ取り込みます。その後、案件IDと更新日時を使ってDeals_Currentを作成すると、重複を避けながら最新のパイプラインを管理できます。

CSVエクスポートとAPI連携はどちらを選ぶべきですか?

月次決算や四半期の資料作成が目的で、案件数が5,000件未満なら、CSVまたはノーコード同期で十分なケースが多いでしょう。日次履歴や大規模データ、複雑な差分処理が必要なら、API連携を検討してください。

Gmail CRMの履歴をそのまま合計してはいけない理由は?

同じ案件がステージ変更のたびに複数行として記録されるためです。最新の1行だけをDeals_Currentに残し、履歴はPipeline_Historyで別管理してください。

Google SheetsのパイプラインとCRMの金額が一致しない場合は?

まず、更新時刻、対象ステージ、案件ID、重複レコード、金額ゼロの案件を確認します。CRM_Controlsに突合セルを設置しておくと、四半期決算報告や稟議資料を共有する前に不一致を検知できます。

GmailのCRMパイプラインデータを、期待ではなく統制とともにGoogle Sheetsへ連携する

CRMを同期しただけで、予測の信頼性が高まるわけではありません。信頼性を支えるのは、安定した案件ID、最新行への重複排除、ステージの明示的な扱い、更新時刻、そして不一致を明確に知らせる突合セルです。

CRMは案件の証跡、Stage_Mapはファイナンス上の判断、予測モデルは評価と計画のために使い分けます。この分離によって、4,200万円のパイプラインが、意図せず4,200万円の売上として扱われる事態を防げます。

ModelMonkeyを14日間無料で試す - Google SheetsとExcelの両方で利用できます。