「代表アドレスに届く問い合わせを、誰かが毎朝読んで担当に振っている」。この仕事は、Google Workspace を使っている会社なら、Google Apps Script と Claude API で機械に渡せます。ただし、渡してよいのは「読んで分けて下書きする」までです。送信の判断まで渡すと、間違いが取り消せない形で外に出ます。
この記事では、Google の公式ドキュメントと Anthropic の公式ドキュメント(いずれも 2026年9月時点)だけを出典に、Gmail の未読を拾って Claude に分類させ、ラベルと返信下書きを作る仕組みの組み方を整理します。個人情報保護委員会の注意喚起に沿った「送ってよい情報の決め方」、二重処理を防ぐ設計、コピペで使うコードとプロンプト、導入前のチェックリストまで載せています。読者は、企業の業務改善・情報システム・Web の担当者を想定しています。
結論 — 先に要点だけ
- 機械に渡すのは「読む・分ける・下書きする」まで。送るのは人。 Apps Script の
createDraftReplyは下書きを作るだけで送信しません。この一線を守ると、分類ミスが顧客の目に触れる前に止められます - 分類は Claude API の構造化出力(JSON スキーマ)で受け取る。 自由文を正規表現で拾う作りは壊れます。
output_config.formatにスキーマを渡すと、決めた形の JSON だけが返ります - 二重処理は「処理済みラベル + 検索条件で除外 + LockService」で防ぐ。 エラーになったメールは処理済みにせず、次回の実行に回します
- 個人情報を送る前に、利用目的と学習利用の有無を確認する。 個人情報保護委員会は、この2点の確認を事業者に求めています。Anthropic の商用製品は既定で入出力を学習に使いません
- 上限を先に知っておく。 Apps Script には1回の実行時間と、時間トリガーの合計実行時間に上限があります。1回に扱う件数を絞り、短い実行を繰り返す設計にします
全体の流れ — 5つの段階と、それぞれの担当
仕組みの骨格は5段階です。どこまでを機械が担い、どこから人が担うかを先に固定します。
| 段階 | やること | 担当 | 使う部品 |
|---|---|---|---|
| 1. 拾う | 未読で未処理の問い合わせスレッドを検索する | Apps Script | GmailApp.search と Gmail の検索演算子 |
| 2. 読む | 最初のメッセージの件名と本文(テキスト)を取り出す | Apps Script | getPlainBody getSubject |
| 3. 分ける | 分類・確信度・要確認フラグ・下書き文を JSON で返す | Claude API | Messages API + 構造化出力 |
| 4. 印を付ける | 分類ラベルと処理済みラベルを付け、下書きを作る | Apps Script | addLabel createDraftReply |
| 5. 送る | 下書きを読み、直して送る。分類が違えばラベルを付け替える | 人 | Gmail の画面 |
Apps Script の Gmail サービスには、検索・ラベル作成・ラベル取得・下書き作成・スレッド取得のメソッドが揃っています。getPlainBody は「HTML 書式を除いた本文」を返すので、Claude に渡すのはこちらを使います。
※ 出典: Google — Apps Script Class GmailApp(取得 2026-09)/Google — Apps Script Class GmailThread(取得 2026-09)/Google — Apps Script Class GmailMessage(取得 2026-09)
段階5を人に残す理由は単純で、送信は取り消せないからです。createDraftReply の公式説明は「このスレッドの最後のメッセージの送信者に対する返信の下書きを作る」であり、送信は含みません。下書きが Gmail に並び、担当者が読んでから送る流れにすると、分類の間違いは社内で止まります。
使う部品と上限【2026年9月時点】
無料で始められますが、上限を知らずに組むと止まります。Apps Script の主な割り当ては次のとおりです。
| 項目 | 無料の Google アカウント | Google Workspace |
|---|---|---|
| メールの読み書き(送信を除く) | 20,000 / 日 | 50,000 / 日 |
| メール送信先の数 | 100 / 日 | 1,500 / 日 |
| URL Fetch の呼び出し | 20,000 / 日 | 100,000 / 日 |
| トリガーの合計実行時間 | 90 分 / 日 | 6 時間 / 日 |
| 1回の実行時間 | 6 分 / 実行 | 6 分 / 実行 |
| トリガーの数 | 20 / ユーザー / スクリプト | 20 / ユーザー / スクリプト |
| プロパティの保存容量 | 500 KB / ストア、9 KB / 値 | 500 KB / ストア、9 KB / 値 |
※ 出典: Google — Quotas for Google Services(Apps Script)(取得 2026-09)
問い合わせの仕分けで先に効いてくるのは「1回の実行は6分まで」と「トリガーの合計実行時間」です。Claude API の応答を待つ時間はメール1通ごとに積み上がるので、1回に扱う件数を絞り、短い実行を10分おきなどに繰り返す設計が向いています。
Claude 側の費用は、モデルごとの入出力トークン単価で決まります。分類と短い下書きは入出力とも小さいため、まず最も速いモデルから始めます。表の単価は100万トークンあたりの米ドルです(2026年9月時点)。
※ 出典: Anthropic — Pricing(取得 2026-09)
| モデル | 入力 | 出力 | 公式の位置づけ |
|---|---|---|---|
| Claude Haiku 4.5 | $1 | $5 | 最速。フロンティアに近い知能 |
| Claude Sonnet 5 | $2 | $10 | 速度と知能の最良の組み合わせ |
| Claude Opus 5.5 | $4 | $20 | 長時間のエージェント作業向け(2026-09-22 公開) |
※ 出典: Anthropic — Models overview(取得 2026-09)/Anthropic — Pricing(取得 2026-09)/Anthropic — Claude Platform release notes(取得 2026-09)
料金ページには2つの注記があります。Sonnet 5 の $2 / $10 は当初「2026年8月31日までの導入価格」でしたが、そのまま標準価格になり、9月1日に予定されていた値上げは行われないと明記されています。もう1つ、Claude 4.7 以降のモデルは新しいトークナイザを使い、同じ文章でおよそ 30% 多くトークンを数えるとあります。Haiku 4.5 は旧トークナイザなので、モデルを切り替えて比べるときはこの差を頭に入れておきます。
※ 出典: Anthropic — Pricing(Model pricing の注記)(取得 2026-09)
もう1点、モデルの寿命です。Models overview の表では、Haiku 4.5 の退役は「2026年10月15日より前にはならない」、Sonnet 5 は「2027年6月30日より前にはならない」とあります。コードにモデル ID を直書きせず設定値にしておき、退役の告知が出たら切り替えられるようにしておきます。
※ 出典: Anthropic — Models overview(Retirement 行)(取得 2026-09)
社内で先に決めること — 何を Claude に送ってよいか
問い合わせメールには、氏名・連絡先・相談内容が入っています。外部の AI に送る前に、個人情報の扱いを決めておかないと、仕組みが動き始めてから止めることになります。
個人情報保護委員会は 2023年6月2日、生成 AI サービスの利用に関する注意喚起を出しました。事業者向けの注意点は2つです。第1に、個人情報を含むプロンプトを入力する場合は、特定した利用目的を達成するために必要な範囲内であることを十分に確認すること。第2に、本人の同意を得ずに個人データを含むプロンプトを入力し、その個人データが応答結果の出力以外の目的で取り扱われる場合は、個人情報保護法に違反する可能性があるため、提供事業者がその個人データを機械学習に利用しないこと等を十分に確認すること。
※ 出典: 個人情報保護委員会 — 生成AIサービスの利用に関する注意喚起等について(取得 2026-09)/同 別添1 PDF(取得 2026-09)
Anthropic 側の扱いは、プライバシーセンターに「既定では、商用製品(Claude for Work、Anthropic API など)の入力・出力をモデルの学習に使わない」と書かれています。例外は、利用者が明示的にフィードバックやバグを報告した場合などです。この仕組みは API を使うので、既定の扱いが当てはまります。
※ 出典: Anthropic Privacy Center — Is my data used for model training?(取得 2026-09)
これを踏まえて、社内で決める項目を表にしました。
| 決める項目 | 決め方の目安 |
|---|---|
| 利用目的に「問い合わせ対応」が含まれるか | プライバシーポリシーの利用目的を確認する。無ければ先に直す |
| 送る範囲 | 件名と本文テキストだけ。添付ファイルと HTML 本文は送らない |
| 送らない範囲 | 社内の他システムの情報、過去のやり取り全文、社員の個人メール |
| 分類ラベルの体系 | 5〜7個に絞る。「その他」を必ず入れて、無理に当てはめさせない |
| 人が確認する条件 | 確信度が低い、返金・解約・苦情・法務の語が入る、添付がある |
| 下書きを作る分類 | 定型で答えられるものだけ(資料請求、営業時間、対応エリアなど) |
| 記録の場所 | 実行ログに「スレッド ID・分類・確信度」を残す。本文は残さない |
全社の AI 利用規程がまだ無い会社は、先に規程を作ってから個別の仕組みを乗せる順序を勧めます。規程の作り方は生成 AI の社内利用ガイドラインの作り方にまとめています。
手順 — 6ステップで組む
ステップ1 — Gmail にラベルを作る
分類ラベル(例: 見積依頼・既存サポート・採用・営業/広告・その他)と、運用ラベル2つ(AI仕分け済み・要確認)を先に作ります。コードからも createLabel で作れますが、名前の揺れを防ぐため手で作って、コード側は getUserLabelByName で取得する形にします。
ステップ2 — Apps Script のプロジェクトを作り、API キーを保存する
script.google.com で新しいプロジェクトを作ります。Claude の API キーはコードに書かず、プロパティサービスに保存します。公式ドキュメントは、スクリプトプロパティを「スクリプトの全利用者がアクセスでき、開発者の外部データベースのユーザー名やパスワードのようなアプリ全体の設定」に使う場所と説明しています。エディタの「プロジェクトの設定」からキー名 ANTHROPIC_API_KEY で登録します。
※ 出典: Google — Properties Service(取得 2026-09)
共有アカウントで動かす場合、そのスクリプトの編集権限を持つ人は誰でもキーを読めます。編集権限を絞ること、キーを Claude Console のワークスペース単位で分けて支出上限を付けることを、あわせて決めておきます。
ステップ3 — 検索条件を決める
Gmail の検索演算子で「未読・受信トレイ・直近2日・処理済みラベルなし」を表します。
is:unread in:inbox newer_than:2d -label:AI仕分け済み
newer_than: は「d(日)・m(月)・y(年)」の単位で期間を指定する演算子です。-label: は指定ラベルの除外です。処理済みラベルを検索条件で除外するのが、二重処理を防ぐ第1の仕組みになります。
※ 出典: Google — Gmail で使用できる検索演算子(取得 2026-09)
ステップ4 — Claude に分類させる(構造化出力)
Claude API の Messages API は POST /v1/messages に、ヘッダー x-api-key・anthropic-version・content-type を付け、本文に model・max_tokens・messages を入れて呼びます。指示は system に書きます。応答の content 配列の text に本文が入り、usage に入出力トークン数が返ります。
※ 出典: Anthropic — Messages API(取得 2026-09)
返答を決まった形で受け取るには、構造化出力を使います。リクエストの output_config.format に type: "json_schema" とスキーマを渡すと、スキーマに合う JSON だけが返ります。この機能は GA(一般提供)で、ベータヘッダーは不要です。Haiku 4.5・Sonnet 5・Opus 5.5 のいずれも対応しています。
※ 出典: Anthropic — Structured outputs(取得 2026-09)
Apps Script から外部 API を呼ぶのは UrlFetchApp.fetch(url, params) です。method・headers・payload・contentType を指定し、muteHttpExceptions: true を付けると HTTP エラーで例外にならず、応答コードを自分で判定できます。
※ 出典: Google — Apps Script Class UrlFetchApp(取得 2026-09)
ステップ5 — ラベルと下書きを付ける
分類ラベルを thread.addLabel で付け、確信度が低いか要確認フラグが立ったものには「要確認」も付けます。下書き文が返ってきたスレッドには thread.createDraftReply(本文) で下書きを作ります。最後に処理済みラベルを付けます。順序が大事で、処理済みラベルは最後に付けます。途中で例外が出たスレッドを、次回もう一度拾えるようにするためです。
ステップ6 — 時間トリガーで回す
Apps Script の時間主導型トリガーは「1分ごとから月1回まで」の間隔で設定できます。作成した人のアカウントで動き、失敗すると作成者にメールで通知が届きます。エディタの「トリガー」から手で作るか、コードで ScriptApp.newTrigger("triageInbox").timeBased().everyMinutes(10).create() のように作ります。
※ 出典: Google — Installable Triggers(取得 2026-09)
日次で決まった時刻に動かす場合は注意が1つあります。公式ドキュメントは「9時のトリガーを作ると、Apps Script は9時から10時の間の時刻を選び、その時刻を日ごとに一定に保つ」と説明しています。分単位で正確な時刻が必要な業務には向きません。
共有の受信箱をこの手順で自分たちで仕分ける場合の進め方と止め方は、企業向けの実務書にもまとめています。
コピペで使えるコード
ラベル名・分類・モデル ID は CONFIG にまとめました。分類の一覧はステップ1で作ったラベル名と一致させます。
const CONFIG = {
model: "claude-haiku-4-5",
query: "is:unread in:inbox newer_than:2d -label:AI仕分け済み",
maxThreads: 15,
categories: ["見積依頼", "既存サポート", "採用", "営業・広告", "その他"],
draftFor: ["見積依頼"],
labelDone: "AI仕分け済み",
labelReview: "要確認",
minConfidence: 0.7,
};
function triageInbox() {
const lock = LockService.getScriptLock();
if (!lock.tryLock(10000)) return; // 前回の実行が終わっていなければ何もしない
try {
const apiKey = PropertiesService.getScriptProperties().getProperty("ANTHROPIC_API_KEY");
if (!apiKey) throw new Error("ANTHROPIC_API_KEY が未設定");
const threads = GmailApp.search(CONFIG.query, 0, CONFIG.maxThreads);
for (const thread of threads) {
const first = thread.getMessages()[0];
const result = classify(apiKey, first.getSubject(), first.getPlainBody().slice(0, 4000));
if (!result) continue; // API エラー。処理済みにせず次回に回す
thread.addLabel(labelFor(result.category));
if (result.needs_human || result.confidence < CONFIG.minConfidence) {
thread.addLabel(labelFor(CONFIG.labelReview));
}
if (CONFIG.draftFor.includes(result.category) && result.draft_reply) {
thread.createDraftReply(result.draft_reply);
}
thread.addLabel(labelFor(CONFIG.labelDone)); // 最後に付ける
console.log(JSON.stringify({ thread: thread.getId(), category: result.category, confidence: result.confidence }));
}
} finally {
lock.releaseLock();
}
}
function labelFor(name) {
return GmailApp.getUserLabelByName(name) || GmailApp.createLabel(name);
}
function classify(apiKey, subject, body) {
const schema = {
type: "object",
properties: {
category: { type: "string", enum: CONFIG.categories },
confidence: { type: "number" },
needs_human: { type: "boolean" },
reason: { type: "string" },
draft_reply: { type: "string" },
},
required: ["category", "confidence", "needs_human", "reason", "draft_reply"],
additionalProperties: false,
};
const payload = {
model: CONFIG.model,
max_tokens: 800,
system: SYSTEM_PROMPT,
messages: [{ role: "user", content: "件名: " + subject + "\n\n本文:\n" + body }],
output_config: { format: { type: "json_schema", schema: schema } },
};
const res = UrlFetchApp.fetch("https://api.anthropic.com/v1/messages", {
method: "post",
contentType: "application/json",
headers: { "x-api-key": apiKey, "anthropic-version": "2023-06-01" },
payload: JSON.stringify(payload),
muteHttpExceptions: true,
});
const code = res.getResponseCode();
if (code !== 200) {
console.error("Claude API " + code + ": " + res.getContentText().slice(0, 300));
return null;
}
const json = JSON.parse(res.getContentText());
const text = json.content.find((block) => block.type === "text");
return text ? JSON.parse(text.text) : null;
}
ポイントは3か所です。tryLock で前回の実行が動いていれば何もせず終わること、API がエラーを返したスレッドは continue で飛ばして処理済みラベルを付けないこと、ログに本文を残さず「スレッド ID・分類・確信度」だけを残すことです。
LockService の公式説明は「コードの一部への同時アクセスを防ぐ。複数のユーザーやプロセスが共有リソースを変更するときの衝突を防ぐのに役立つ」です。時間トリガーが重なったときの二重処理を、この1行で防ぎます。
※ 出典: Google — Apps Script Class LockService(取得 2026-09)
コピペで使える分類プロンプト
SYSTEM_PROMPT の中身です。分類の定義と「人に回す条件」と「下書きを書く条件」を、業務側が日本語で書きます。ここが仕組みの本体で、コードより時間をかける価値があります。
あなたは当社の代表アドレスに届いた問い合わせメールを一次仕分けする担当です。
メールの件名と本文を読み、次の JSON を返してください。
category は次のいずれか1つ:
- 見積依頼: 料金・見積・提案を求めている
- 既存サポート: すでに契約・購入した相手からの質問や不具合の連絡
- 採用: 求人への応募、採用に関する質問
- 営業・広告: 当社への売り込み、広告・掲載の勧誘
- その他: 上のどれにも当てはまらない
confidence は 0 から 1 の数値。迷いがあれば低くしてください。
needs_human は次のどれかに当てはまれば true:
- 返金・解約・苦情・損害・法的措置・弁護士 の語がある
- 期限が今日または明日と書かれている
- 本文が極端に短い、または内容が読み取れない
- 添付ファイルの内容を前提にしている
draft_reply は category が「見積依頼」のときだけ、次の型で書く。それ以外は空文字。
- 冒頭で問い合わせへの礼を1文
- 担当者が内容を確認してから折り返す旨を1文
- 確認のために聞きたいこと(対象の業務、時期、規模)を箇条書きで3つまで
- 結び1文。署名は書かない
- 料金・納期・できることの約束は書かない
reason には判断の根拠を40字以内で書く。
下書きに「料金・納期・できることの約束を書かない」と明記するのは、機械が書いた文が会社の約束になるのを防ぐためです。約束は人が下書きを直す段階で入れます。
人が送る線引き — 自動でよいこと・人が見ること
| 自動でよいこと | 人が見ること |
|---|---|
| 分類ラベルを付ける | 分類が合っているか(違えば付け替える) |
| 「要確認」ラベルを付ける | 要確認の中身を読み、担当を決める |
| 定型で答えられる分類に下書きを作る | 下書きを読み、約束事を足して送る |
| 実行ログに ID・分類・確信度を残す | 週1回、確信度が低かった件と付け替えた件を見直す |
| API エラーの件を次回に回す | 同じ件が何度も残っていたら原因を見る |
「付け替えた件」の記録が、分類プロンプトを直す材料になります。付け替えが多い分類は定義が曖昧で、要確認が多すぎるなら条件が広すぎます。
止まらない・二重処理しない・気づける運用
無人で動く仕組みは、止まっていることに気づけない作りが一番の問題です。次の4つを最初から入れます。
- 失敗の通知。 時間トリガーが失敗すると Apps Script が作成者にメールを送ります。通知先が退職者の個人アカウントにならないよう、トリガーは共有の管理用アカウントで作ります
- 実行ログの確認場所。 エディタの「実行ログ」は開発中の確認用で長くは残りません。継続的な確認は script.google.com の「実行数」の一覧か、Cloud Logging で行います
- API エラーの扱い。 Claude API は 429(レート制限や支出上限)・500(内部エラー)・529(一時的な過負荷)を返すことがあります。公式は 500 を指数バックオフで再試行するよう案内しています。この仕組みでは再試行を組み込まず、失敗した件を次回の実行に回す設計にしています
- 1回に扱う件数の上限。 1回の実行は6分までなので、
maxThreadsを小さく保ち、間隔を短くして繰り返します
※ 出典: Google — Installable Triggers(取得 2026-09)/Google — Logging(Apps Script)(取得 2026-09)/Anthropic — Claude API errors(取得 2026-09)/Google — Quotas for Google Services(取得 2026-09)
支出の上限は Claude Console のワークスペース単位で設定でき、上限に達すると API は 400 または 429 を返します。仕分け用のキーを専用ワークスペースに置き、上限を小さく切っておくと、設定ミスで大量に呼び出したときの被害を金額で止められます。
※ 出典: Anthropic — Claude API errors(400 と 429 の説明)(取得 2026-09)
効果の測り方 — 記録表の型
数字は自社で取ります。仕組みを入れる前に1〜2週間、次の表を手で付けておくと、入れた後との比較ができます。
| 記録する項目 | 前(手作業) | 後(仕組みあり) |
|---|---|---|
| 1日の問い合わせ件数 | 手で数える | 実行ログの件数 |
| 最初の返信までの時間 | 受信時刻と返信時刻の差 | 同じ |
| 分類の付け替え件数 | 該当なし | 人が付け替えた件数 |
| 要確認になった件数 | 該当なし | ラベル数 |
| 下書きをそのまま使えた割合 | 該当なし | 送信前に直した箇所の有無を記録 |
| 仕分けに使った人の時間 | 担当者の自己申告 | 見直しに使った時間 |
「最初の返信までの時間」だけを追うと、下書きをろくに読まずに送る動機が生まれます。「付け替え件数」と「直した箇所」をセットで追い、品質の指標を必ず1つ入れます。
導入前セルフチェックリスト(12項目)
- プライバシーポリシーの利用目的に、問い合わせへの対応が含まれている
- 外部 AI に送る範囲を「件名と本文テキストのみ」と決め、添付は送らない
- 全社の AI 利用規程があり、この仕組みがその範囲に入っている
- 分類ラベルは7個以内で、「その他」がある
- 「人が確認する条件」を業務側が日本語で書いた
- 下書きを作る分類を、定型で答えられるものに限定した
- 下書きに料金・納期・約束を書かせない指示を入れた
- API キーはプロパティサービスに置き、スクリプトの編集権限を絞った
- 仕分け用のキーを専用ワークスペースに置き、支出上限を設定した
- トリガーは共有の管理用アカウントで作り、失敗通知が届く先を確認した
- 処理済みラベル・LockService・エラー時の持ち越しの3つが入っている
- 導入前の1〜2週間分の記録表を取った
よくある失敗パターン 5つ
| 失敗 | 何が起きるか | 防ぎ方 |
|---|---|---|
| 送信まで自動にした | 誤分類のメールに定型返信が飛び、取り消せない | 下書きまでに留める。送信は人 |
| 分類を細かくしすぎた | 判定が割れ、要確認だらけになる | 7個以内。迷うものは「その他」へ |
| 処理済みラベルを最初に付けた | 途中で例外が出た件が二度と拾われない | 処理済みは最後。エラー時は付けない |
| 本文全文をログに残した | 個人情報が実行ログに蓄積する | ID・分類・確信度だけを残す |
| モデル ID を直書きした | 退役時にコードを探して直すことになる | 設定値にまとめ、退役告知を追う |
公式ドキュメント・リソース集
| 目的 | 資料 |
|---|---|
| Gmail を操作する | Class GmailApp、Class GmailThread、Class GmailMessage |
| 検索条件を書く | Gmail で使用できる検索演算子 |
| 定期実行する | Installable Triggers |
| 上限を知る | Quotas for Google Services |
| キーを保存する | Properties Service |
| 外部 API を呼ぶ | Class UrlFetchApp |
| 同時実行を防ぐ | Class LockService |
| ログを見る | Logging |
| Claude を呼ぶ | Messages API、Structured outputs、Errors |
| モデルと料金 | Models overview、Pricing |
| 個人情報の扱い | 個人情報保護委員会 — 生成AIサービスの利用に関する注意喚起等、Anthropic — 学習利用の方針 |
よくある質問
Q. 返信の送信まで自動にしてはいけませんか?
止めておくことを勧めます。分類を間違えたメールに自動返信が飛ぶと、取り消せません。Apps Script には createDraftReply という下書きを作るメソッドがあり、下書きまでを機械に任せ、人が読んでから送る形にすると、間違いが表に出る前に止められます。送信の判断を人に残すのが、この仕組みの安全装置です。
Q. 問い合わせメールには氏名や連絡先が入っています。Claude に送ってよいのですか?
個人情報保護委員会は、事業者が個人情報を含むプロンプトを入力する場合に、特定した利用目的の範囲内であることと、提供事業者がその個人データを機械学習に利用しないことを十分に確認するよう求めています。Anthropic は API など商用製品の入出力を既定では学習に使わないと明記しています。自社の利用目的に問い合わせ対応が含まれるかを先に確かめてください。
Q. どのモデルを使えばよいですか?費用はどのくらいですか?
分類と短い下書きなら、公式が最速と位置づける Claude Haiku 4.5 から始めるのが妥当です。料金は入力 $1 / 出力 $5(100万トークンあたり、2026年9月時点)で、問い合わせ1通あたりの入出力はごく小さいため、費用より Apps Script 側の実行時間の上限を先に気にすることになります。判定が不安定なら Sonnet 5 に切り替えて比べます。
※ 出典: Anthropic — Pricing(取得 2026-09)
Q. 同じメールに二重にラベルが付いたり、下書きが2つできたりしませんか?
3つの仕組みで防ぎます。処理済みラベルを付けて検索条件で除外する、LockService で前回の実行が終わるまで次の実行を始めない、Claude API がエラーを返したメールには処理済みラベルを付けずに次回に回す、の3つです。Apps Script の1回の実行は6分までなので、1回に扱う件数も絞ります。
※ 出典: Google — Quotas for Google Services(取得 2026-09)
Q. 社内にプログラマーがいなくても組めますか?
この記事のコードは Apps Script のエディタに貼り付けて、API キーとラベル名を設定すれば動く形にしています。ただし、分類の基準と返信文の型を決めるのは業務側の仕事で、ここに時間をかける価値があります。ラベルの体系と「人が確認する条件」を先に紙で決めてから、コードに移してください。
次の一歩
まず、チェックリストの最初の3項目(利用目的・送る範囲・社内規程)を確かめてください。ここが未整備なら、コードより先に整えるのが順序です。次に、分類ラベルと「人が確認する条件」を業務側が紙に書き、コードの CONFIG と SYSTEM_PROMPT に写します。最初の2週間は maxThreads を小さくし、付け替え件数を毎日見て、分類の定義を直します。
自社の問い合わせの種類に合わせた分類の設計、既存の顧客管理や社内システムとの接続、全社の AI 利用規程との整合まで含めて相談したい場合は、状況を書き添えてお問い合わせください。Claude の法人導入全般の考え方は Claude 導入支援 に、サービスの一覧はサービスにまとめています。
更新履歴
- 2026-09-24: 初版公開