営業の数字が続かない理由は、指標の数にある
営業活動を記録する仕組みは、たいてい3週間で死にます。原因は気合いではなく、指標を増やしすぎたことです。
受注額も見たい、アポ数も見たい、フォロー回数も見たい。そうやって欲張ると、集計そのものに1週間かかる仕組みが生まれ、更新する人がいなくなります。続くかどうかは、最初に何個の指標を選ぶかでほぼ決まります。
この記事では、営業の計測を3指標だけに絞り、そのうち2つをGoogle Apps Script(GAS)で自動収集する実装を書きます。手で記録するのは1日1行、残りは機械に数えさせる形です。
対象は、商談数が月に10〜20件くらいの法人営業を想定しています。CRMを入れ替えず、スプレッドシートとGASだけで完結させます。
指標は3つ — 投入・対話・成果物
選んだのはこの3つです。
| 指標 | 何を数えるか | 数え方 |
|---|---|---|
| 準備工数 | 案件を取るための作業時間 | 自己申告(15分刻み) |
| 商談数 | 先方が聞く姿勢を見せた対話 | カレンダーから自動集計 |
| 提案数 | 金額を書いた文書を送った回数 | Gmail検索式で確認 |
3つにした理由は、営業の工程に1対1で対応するからです。準備は投入、商談は対話、提案は成果物。川上から順に1つずつ押さえておけば、3つ並べるだけで自分の営業の形が見えます。
ここで重要なのが、この3つは「すでに起きた事実」しか数えないという共通点です。受注額は月末まで動かない結果指標で、週次の改善には遅すぎます。アポ数は先方の意思が固まる前の数字なので大きくブレます。事実だけを数える記録は、後から振り返っても嘘が混ざりにくい。
そしてもう1つ。AIに任せた作業が本当に効いているかは、この3指標でしか判定できません。準備工数が減っていないなら、任せたつもりで自分でやり直している可能性が高い。計測はAI化の効果を確かめる装置でもあります。
定義を先に決める — 迷ったらこの基準に戻る
指標が続かない二番目の理由は、数える対象が日によって変わることです。
「今週は商談が少ないから、飛び込み2件も入れておこう」——こうやって定義が広がると、数字が伸びた週と本当に商談が増えた週の区別が付かなくなり、ログは使い物にならなくなります。
なので、定義は先に固定します。
商談数は「先方が時間を確保して、こちらの話を聞く姿勢を見せた対話」のみ。オンライン・電話・対面は区別しません。線引きに迷ったら**「先方が次のアクションを聞いてきたか」**で判定します。「資料を送ってほしい」「次はいつ会えるか」——こうした返しがあれば商談です。受付で断られた飛び込み、名刺交換のみ、日程変更の連絡は数えません。
提案数は「金額を書いた文書を先方に送った日」で数え、初回の送付のみとします。1つの案件を3回送り直して3カウントしても、持ち球は1つのままです。初回に限定するのは、この指標の意味が「提案段階に到達した案件数」だからです。
準備工数はタイマーを使わず、1日の終わりに感覚で15分刻みに丸めます。「A社の調査に30分、資料の直しに45分」の粒度で十分です。改善に効くのは精度ではなく一貫性です。準備工数が問題になるのは週で数時間、月で数十時間の単位なので、5分の誤差が結論を変えることはありません。逆に、タイマーを回す記録は3日で挫折します。
商談数をGASで数える — カレンダーのタイトル規約
自己申告の弱点は、数字が下がりそうな週に判断のすり替えが起きることです。「あれは商談というより、ちょっとした電話だったな」と。
そこで商談数だけは機械に数えさせます。運用は1つだけ。カレンダーに商談を入れるとき、タイトルに「商談」という言葉を入れる。「【商談】○○商事 田中様」のような形です。過去の予定を直す必要はありません。今日からで構いません。
次のコードをスプレッドシートの「拡張機能 → Apps Script」に貼り、「実行」を押せば設置完了です。
function countMeetings() {
// 過去7日の予定を取得する
const cal = CalendarApp.getDefaultCalendar();
const start = new Date();
start.setDate(start.getDate() - 7);
const events = cal.getEvents(start, new Date());
// タイトルに「商談」を含む件数を数える
let count = 0;
for (let i = 0; i < events.length; i++) {
if (events[i].getTitle().indexOf('商談') > -1) {
count++;
}
}
// 「商談数」シートに1行追記する
const ss = SpreadsheetApp.getActiveSpreadsheet();
let sheet = ss.getSheetByName('商談数');
if (!sheet) {
sheet = ss.insertSheet('商談数');
}
sheet.appendRow([new Date(), count]);
}
初回の実行時だけ許可の確認が出ます。「詳細」から進めて許可してください。自分のカレンダーを読み、同じブックに追記する許可です。「商談数」シートに1行増えれば設置完了で、以後は週に1回ボタンを押すだけです。
週次で回すなら時間主導トリガーを足します。 Apps Scriptの「トリガー」画面から countMeetings を「週ベースのタイマー・月曜9時」で登録すれば、押す運用すら不要になります。
function setupWeeklyTrigger() {
ScriptApp.newTrigger('countMeetings')
.timeBased()
.onWeekDay(ScriptApp.WeekDay.MONDAY)
.atHour(9)
.create();
}
この関数を1回実行すればトリガーが登録されます。ただしトリガーの二重登録に注意してください。同じ関数を何度も実行すると、その回数だけトリガーが増え、同じ行が重複して記録されます。登録前に一覧を確認する関数を用意しておくと安全です。
function listTriggers() {
const triggers = ScriptApp.getProjectTriggers();
triggers.forEach(t => Logger.log(t.getHandlerFunction()));
}
提案数をGmail検索式で確認する
提案数はGmailの検索式で拾えます。検索ボックスに次の文字列を貼ってください。
after:2025/6/1 before:2025/7/1 subject:(提案 OR 見積) has:attachment
ヒットした件数が、その月に送った「提案らしいメール」のおおよその総数です。日付の部分は毎月書き換えます。
件数はスレッド単位なので厳密な値ではありません。ただし3行メモの記録と大きく食い違ったら、メモの取り忘れか送り忘れのどちらかが起きています。どちらも直す価値のある発見です。自動集計の役割は、正確な数字を出すことではなく、自己申告とのズレを見つけることです。
毎日の記録は3行、AIに1行へ変換させる
手で書くのは1日3行だけです。終業時に、自分宛のチャットかメモ帳に書きます。
準備: A社の調査60分、B社資料の修正30分
商談: A社オンライン30分、C社対面60分
提案: B社に見積書を送付
書けない日は、ゼロの3行を送ります。「準備:ゼロ、商談:ゼロ、提案:ゼロ」。空白にしてはいけません。 空白は「サボったのか、単に何もなかったのか」の区別が後から付かず、データとして使えなくなります。ゼロは立派な記録です。
準備の行には作業名を残してください。「60分」ではなく「調査に60分」と書く。後に「調査をAIに任せる」と決めたとき、任せる前後でこの作業名の分だけを抜き出して効果を測れます。
書いた3行はAIに貼って1行に変換します。次のプロンプトを保存し、毎日同じものを使います。
あなたは営業記録の整理係です。私が送る3行のメモを、
次の形式のCSV1行に変換してください。
日付,準備工数(分),商談数,提案数,メモ
ルール:
- 準備工数は15分単位に丸める
- 書かれていない項目は0にする
- メモは50字以内に要約する
- 出力はCSVの1行のみ。説明文は付けない
出力はこうなります。
2025-06-12,90,2,1,A社調査・B社見積書送付
この1行をスプレッドシートの「活動ログ」シートに貼って1日終わりです。商談数の自動集計シートと同じブックに置いておけば、後で日付を鍵に両方を突き合わせられます。
3つ並べると「詰まり」が見える
数字を並べたときに何が分かるか、例で見ます。同じ目標を背負う二人の、ある月の記録です。
| Aさん | Bさん | |
|---|---|---|
| 準備工数 | 58時間 | 9時間 |
| 商談数 | 19件 | 8件 |
| 提案数 | 3件 | 3件 |
| 1商談あたりの準備 | 3.0時間 | 1.1時間 |
| 商談→提案の転換率 | 16% | 38% |
Aさんは毎晩準備に追われているのに、提案に届く案件が少ない。商談6件でようやく提案1件という転換率です。この場合、打ち手は「商談の深さ」側に集中します。初回商談で要件と予算感を固める質問表をAIに作らせる、商談当日に議事録をまとめて翌日の提案につなげる。
Bさんは逆です。転換率38%は十分戦える水準なのに、月8件の商談では提案3件が天井です。Bさんの一手は、1商談あたり1.1時間の準備をさらにAIに渡して、商談数そのものを増やすことです。
大事なのは、どちらも怠けているのではなく詰まる場所が違うだけという点です。3指標は頑張りを裁く物差しではなく、詰まりを探す地図として使います。そして詰まった工程こそ、次にAIへ渡す仕事の最有力候補になります。
測り始めの1か月は、ただ測る
運用上の原則を2つ書いて終わります。
1か月目は何も変えないこと。 数字が出るとすぐ直したくなりますが、測り始めの月は「普通」を採る期間です。比較対象がいない状態で直しても、効いたかどうかを確かめられません。改善は2か月目から。先月比と先週比が出せる状態になって初めて、打ち手が選べます。
活動ログを人事評価に使わないこと。 準備工数を評価に使えば申告時間は一斉に縮み、商談数を評価に使えば定義は一斉に広がります。数字がきれいに整った瞬間、ログは嘘の集まりになります。「このログは改善専用」と最初に宣言しておいてください。
3指標とGASの自動集計、毎日3行の記録。この3つが揃うと、営業の改善は「頑張る」から「どこを直すか決める」に変わります。そしてどこを直すかが決まれば、AIに何を任せるかも自動的に決まります。
📗 営業の仕事をAIに任せろ — 商談準備・提案・フォローを自動化する実践ガイド(Kindle)