「提案メールを毎回ゼロから書いてる…」「顧客ごとに文面を変えるのが面倒」――そんな悩みをGemini APIとGoogle Apps Scriptで解決します。スプレッドシートに顧客情報を入力するだけで、パーソナライズされた営業メールを自動生成できる仕組みを、コードから丁寧に解説します。
AIを使ったメール生成というと「ChatGPTに貼り付けて手動でコピー」というイメージがあるかもしれません。でも、GASと組み合わせればスプレッドシートのボタン1つで100件分の個別メールを自動生成できます。しかも無料(Gemini APIの無料枠内)で始められます。
この記事でできること
- スプレッドシートの顧客リストをもとにGemini APIで個別メール文面を自動生成
- 生成したメールをGmailで自動送信(または下書き保存)
- プロンプトを変えるだけで提案・フォローアップ・御礼メールにも対応
- 実装に必要なGASコード一式を本記事で公開
事前準備(10分)
必要なものは以下の3つです。すべて無料で揃います。
- Googleアカウント(Gmailアドレスがあれば可)
- Gemini APIキー(Google AI Studioで取得・無料)
- Googleスプレッドシート(GASプロジェクトを作成する)
Gemini APIキーの取得方法
1. Google AI Studio にアクセスし、Googleアカウントでログイン
2.「Get API key」→「Create API key in new project」をクリック
3. 表示されたAPIキー(AIzaで始まる文字列)をコピーして保存
APIキーはスクリプトプロパティに保存します(コードに直書きしないこと)。GASの「プロジェクトの設定」→「スクリプトプロパティを追加」で GEMINI_API_KEY というキー名で貼り付けてください。
STEP 1:スプレッドシートの準備
新しいGoogleスプレッドシートを作成し、シート名を「顧客リスト」に変更します。1行目にヘッダーを作成してください。
| A列(会社名) | B列(担当者名) | C列(メールアドレス) | D列(業種) | E列(課題・ニーズ) | F列(送信ステータス) |
|---|---|---|---|---|---|
| 株式会社〇〇 | 山田 太郎 | yamada@example.com | 製造業 | 月次レポート作成に毎月10時間かかっている | (空欄) |
「課題・ニーズ」列がポイントです。ここに顧客の具体的な悩みを記入することで、AIがその悩みに刺さるパーソナライズメールを生成します。
STEP 2:GASコードを貼り付ける
スプレッドシートのメニュー「拡張機能」→「Apps Script」を開き、以下のコードを貼り付けます。
/**
* Gemini API x GAS 営業メール自動生成ツール
*/
const SHEET_NAME = '顧客リスト';
const SENDER_NAME = '松下 浩平';
const YOUR_SERVICE = 'GASxAI業務自動化サービス';
const DRAFT_MODE = true; // true=下書き保存, false=即送信
function generateAndSendEmails() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
const lastRow = sheet.getLastRow();
if (lastRow < 2) {
SpreadsheetApp.getUi().alert('顧客データがありません。');
return;
}
const data = sheet.getRange(2, 1, lastRow - 1, 6).getValues();
let successCount = 0;
let skipCount = 0;
data.forEach((row, index) => {
const [company, name, email, industry, needs, status] = row;
if (status === '送信済み' || !email) { skipCount++; return; }
const emailContent = generateEmailContent(company, name, industry, needs);
if (!emailContent) return;
if (DRAFT_MODE) {
GmailApp.createDraft(email, emailContent.subject, emailContent.body);
} else {
GmailApp.sendEmail(email, emailContent.subject, emailContent.body, { name: SENDER_NAME });
}
sheet.getRange(index + 2, 6).setValue(DRAFT_MODE ? '下書き保存済み' : '送信済み');
successCount++;
Utilities.sleep(1000);
});
SpreadsheetApp.getUi().alert('完了!
生成: ' + successCount + '件
スキップ: ' + skipCount + '件');
}
function generateEmailContent(company, name, industry, needs) {
const apiKey = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');
if (!apiKey) { console.error('GEMINI_API_KEY が未設定'); return null; }
const prompt = 'あなたは営業メールの専門家です。以下の顧客情報をもとに自然な営業メールを作成してください。
【顧客情報】
・会社名: ' + company + '
・担当者名: ' + name + ' 様
・業種: ' + industry + '
・課題: ' + needs + '
【提供サービス】
' + YOUR_SERVICE + '
【ルール】
・件名は30文字以内
・本文は250〜350文字
・共感ファーストで書く
・返信促進文を末尾に
・署名不要
【出力形式】
件名: [件名]
本文:
[本文]';
const url = 'https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash-lite:generateContent?key=' + apiKey;
const payload = { contents: [{ parts: [{ text: prompt }] }], generationConfig: { temperature: 0.7, maxOutputTokens: 500 } };
try {
const response = UrlFetchApp.fetch(url, { method: 'POST', contentType: 'application/json', payload: JSON.stringify(payload) });
const result = JSON.parse(response.getContentText());
const text = result.candidates[0].content.parts[0].text;
const subjectMatch = text.match(/件名:s*(.+)/);
const bodyMatch = text.match(/本文:
([sS]+)/);
return {
subject: subjectMatch ? subjectMatch[1].trim() : company + ' ' + name + '様へのご提案',
body: bodyMatch ? bodyMatch[1].trim() : text
};
} catch (error) {
console.error('Gemini API エラー:', error);
return null;
}
}
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('メール自動生成')
.addItem('メールを生成・送信', 'generateAndSendEmails')
.addToUi();
}
STEP 3:APIキーをスクリプトプロパティに登録する
APIキーをコードに直書きするのはセキュリティ上NGです。必ずスクリプトプロパティに保存してください。
- GASエディタ左メニューの「プロジェクトの設定(歯車アイコン)」をクリック
- 「スクリプトプロパティ」セクションで「プロパティを追加」
- プロパティ名:
GEMINI_API_KEY、値: 取得したAPIキーを貼り付け - 「スクリプトプロパティを保存」をクリック
STEP 4:動作確認
- スプレッドシートに戻り、顧客データを2〜3行入力する
- メニュー「メール自動生成」→「メールを生成・送信」をクリック
- 初回は権限の許可ダイアログが表示されます。「許可」をクリック
- 処理完了後、Gmailの「下書き」フォルダを確認する
トラブルシュートチェックリスト
- 「GEMINI_API_KEY が未設定」→ スクリプトプロパティのキー名を確認
- 「Request failed」→ APIキーが正しいか、Gemini APIが有効か確認
- 「下書きが届かない」→ DRAFT_MODE が true になっているか確認
- API制限エラー → Utilities.sleep(4000) に変更して再試行
応用:プロンプトを変えるだけで用途が広がる
このツールの強みはプロンプトを変えるだけで用途が無限に広がる点です。
- フォローアップメール:「先日ご提案した件について〜」の文体に変更
- 御礼メール:「本日はお時間をいただきありがとうございました」に変更
- リマインドメール:返信のない顧客への再アプローチ文
- 件名A/Bテスト:複数パターンを生成してスプレッドシートに記録
さらに発展させると、Gmailの送信記録をスプレッドシートに自動記録したり、返信があった顧客を自動でフラグ立てしたりすることも可能です。
まとめ
Gemini APIとGASを組み合わせることで、顧客の課題に合わせたパーソナライズ営業メールを自動生成できます。
- スプレッドシートに顧客情報を入力するだけでOK
- Gemini APIの無料枠で月数百件まで対応可能
- プロンプト変更で提案・フォロー・御礼など多用途に展開できる
「このコードをうちの営業フローに合わせてカスタマイズしてほしい」「CRMと連携させたい」という方は、下記からお気軽にご相談ください。


コメントを残す