Gmail自動返信【GAS】コピペで完成!たった3ステップで下書き作成術

「いつも同じような内容のメールに返信している…」
「請求書の受領確認メール、定型文なのに毎回作るのは本当に面倒…」
毎日お仕事お疲れ様です!小さな町工場では、一人ひとりがたくさんの業務を抱えていて、本当に大変ですよね。特に、メール対応のような細かくて同じことの繰り返し作業は、時間を奪われる大きな原因になりがちです。
もし、そんな面倒なメール返信文作成が、あなたが何もしなくても自動で終わっていたら…どうでしょう?
この記事では、Googleスプレッドシートと、ちょっとした「魔法の呪文(Google Apps Script、略してGAS)」を使って、Gmailの定型的な返信作業を劇的に効率化するシステムを、プログラミング経験が全くない方でもコピー&ペーストで実装できるように、どこよりも丁寧に解説します!
難しそうに聞こえるかもしれませんが、大丈夫。この記事の通りに手順を踏めば、誰でも「メール返信ロボット」を手に入れることができます。
さあ、一緒に日々の面倒を「気持ちいい快感」に変えていきましょう!
この自動化で実現できる4つのすごいこと

今回作成するシステムは、ただメールを返すだけではありません。あなたの仕事を劇的にラクにする、こんなに賢い機能が満載なんですよ。
- 賢いルール設定で、特定のメールだけに反応! 「A社からの」「件名に『請求書』と入っていて」「添付ファイルがある」メールにだけ反応する、といった複数の条件を自由に組み合わせられます。まるで、あなた専用の優秀な秘書がいるみたいですね。
- ルール管理はスプレッドシートで超簡単! すべてのルールは、普段から使い慣れているスプレッドシートで管理します。新しい返信パターンを追加したい時も、プログラミングの画面を開く必要は一切なし!シートに1行追加するだけでOKです。
- 柔軟な返信設定で、思い通りの返信を! 「全員に返信」するかどうかや、返信するメールの件名に「【〇〇確認済】」といった文言を自動で追加することも可能です。細かい気配りも、このシステムが代行してくれます。
- いきなり送信しない!安全な「下書き保存」 これが一番の安心ポイントかもしれません。メールを勝手に送信するのではなく、一度Gmailの「下書き」フォルダに保存します。あなたは、最終的に内容を確認して、自分の手で送信ボタンを押すだけ。これなら誤送信の心配もありませんね!
ステップ1:準備はこれだけ!司令塔になるスプレッドシートを作ろう
それでは、さっそく作っていきましょう! まずは、すべてのルールを管理する「司令塔」となるスプレッドシートを準備します。
1-1. 新しいスプレッドシートを作成
Googleドライブを開き、左上の「+ 新規」ボタンから「Googleスプレッドシート」を選んで、新しいシートを作成します。ファイル名は「Gmail自動返信設定シート」のような分かりやすい名前にしておきましょう。

1-2. 「ルール」シートを整える
最初からある「シート1」の名前をダブルクリックして「ルール」に変更します。

次に、以下の見出しを A1セルからJ1セルにかけて、順番に入力してください。ここが、返信のルールを決める場所になります。
- A1:有効/無効
- B1:ルール名
- C1:条件:送信者アドレス
- D1:条件:件名(含む言葉)
- E1:条件:添付ファイル
- F1:返信方法
- G1:件名編集
- H1:追加する文言
- I1:返信メールの本文
- J1:付与するラベル名
入力すると、このようになります。

1-3. 入力ミスを防ぐ「入力規則」を設定しよう
手入力はミスの元。便利な機能を使って、選択するだけで入力できるように設定しちゃいましょう!
- A列(有効/無効): A2セルから下のセル(A1000など、十分な範囲)を選択し、メニューの「挿入」>「チェックボックス」をクリックします。これで、ルールを使うかどうかをチェック一つで切り替えられます。
- E列(条件:添付ファイル): E2から下のセルを選択し、「データ」>「データの入力規則」>「ルールを追加」と進みます。「条件」で「プルダウン」を選び、「オプション1」に
あり
、「オプション2」になし
、「オプション3」に問わない
と入力して「完了」を押します。 - F列(返信方法): 同じように、F2から下のセルに
送信者のみ
と全員に返信
のプルダウンを設定します。 - G列(件名編集): G2から下のセルに
先頭に追加
,末尾に追加
,変更なし
のプルダウンを設定します。

「チェックボックス」と「プルダウン」の場所

G列の設定画面

入力規則を設定するとクリックだけで正確な内容を入力することができるようになります。
1-4. 全員共通の「設定」シートを作成
最後に、シート左下の「+」(シートを追加)ボタンで新しいシートを追加し、名前を「設定」に変更します。 そして、以下のように入力してください。ここに入力した署名が、すべての自動返信メールで共通の署名として使われます。

「+」をクリックしてシートを追加しシート名を「設定」へ変更

作成した設定シートに署名を設定します。
ステップ2:コピペでOK!魔法の呪文(GASコード)を貼り付けよう
いよいよ、このシステムに命を吹き込む「魔法の呪文」、GASコードを設定します。プログラミングの知識は不要!ただコピーして貼り付けるだけなので、安心してくださいね。
2-1. スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」>「Apps Script」を選択します。


2-2. コードをぜんぶ貼り付け!
新しいタブで、少し難しそうな画面(スクリプトエディタ)が開きます。 最初から何かコードが書かれているかもしれませんが、それはすべて選択して削除してしまいましょう。 そして、空っぽになった画面に、以下のコードをすべてコピーして、そのまま貼り付けてください。
// ==============================
// Gmail自動返信下書き作成システム
// ==============================
// ======【全体設定】======
// シート名を指定します
const RULE_SHEET_NAME = 'ルール';
const SETTING_SHEET_NAME = '設定';
// ルールシートの列番号を指定します (A列が1, B列が2, ...)
const COL_ENABLED = 1;
const COL_SENDER = 3;
const COL_SUBJECT = 4;
const COL_ATTACHMENT = 5;
const COL_REPLY_TYPE = 6;
const COL_SUBJECT_EDIT_TYPE = 7;
const COL_SUBJECT_EDIT_TEXT = 8;
const COL_BODY = 9;
const COL_LABEL = 10;
// 処理済みのメールに付ける共通の親ラベル
const PROCESSED_LABEL_NAME = '~済';
// ==========================================================
/**
* メインの処理を実行する関数
*/
function checkEmailsAndCreateDrafts() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ruleSheet = ss.getSheetByName(RULE_SHEET_NAME);
const settingSheet = ss.getSheetByName(SETTING_SHEET_NAME);
if (!ruleSheet || !settingSheet) {
Logger.log('必要なシートが見つかりません。シート名を確認してください。');
return;
}
const signature = settingSheet.getRange('B2').getValue();
const rules = ruleSheet.getRange(2, 1, ruleSheet.getLastRow() - 1, ruleSheet.getLastColumn()).getValues();
const today = new Date();
const searchDate = `${today.getFullYear()}/${today.getMonth() + 1}/${today.getDate()}`;
const query = `is:inbox -label:"${PROCESSED_LABEL_NAME}" after:${searchDate}`;
const threads = GmailApp.search(query);
let processedLabel = GmailApp.getUserLabelByName(PROCESSED_LABEL_NAME);
if (!processedLabel) {
processedLabel = GmailApp.createLabel(PROCESSED_LABEL_NAME);
}
for (const thread of threads) {
const messages = thread.getMessages();
const message = messages[messages.length - 1];
for (const rule of rules) {
const isEnabled = rule[COL_ENABLED - 1];
if (!isEnabled) continue;
const conditionSender = rule[COL_SENDER - 1];
if (conditionSender && !message.getFrom().includes(conditionSender)) continue;
const conditionSubject = rule[COL_SUBJECT - 1];
if (conditionSubject && !message.getSubject().includes(conditionSubject)) continue;
const conditionAttachment = rule[COL_ATTACHMENT - 1];
const hasAttachment = message.getAttachments().length > 0;
if ((conditionAttachment === 'あり' && !hasAttachment) || (conditionAttachment === 'なし' && hasAttachment)) continue;
Logger.log(`条件に一致しました: ${message.getSubject()}`);
// 1. 返信文と署名を準備
const ruleBody = rule[COL_BODY - 1];
const replyBodyText = `${ruleBody}\n\n${signature}`;
// 2. 件名を準備
const editType = rule[COL_SUBJECT_EDIT_TYPE - 1];
const editText = rule[COL_SUBJECT_EDIT_TEXT - 1];
let replySubject = message.getSubject();
if (!replySubject.toLowerCase().startsWith('re:')) {
replySubject = `Re: ${replySubject}`;
}
if (editType === '先頭に追加') {
replySubject = `${editText} ${replySubject}`;
} else if (editType === '末尾に追加') {
replySubject = `${replySubject} ${editText}`;
}
// 3. 返信文と、元のメールのHTML本文を引用形式で結合する
const replyHtml = replyBodyText.replace(/\n/g, '<br>'); // 返信文をHTMLの改行に変換
const originalHtml = message.getBody(); // 元のメール本文をHTMLで取得
// Gmailと同じ形式の引用ブロックで元の本文を囲む
const finalHtmlBody = `${replyHtml}<br><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">${originalHtml}</blockquote>`;
// 4. まず空の下書きを作成する
const replyType = rule[COL_REPLY_TYPE - 1];
let draft;
if (replyType === '全員に返信') {
draft = thread.createDraftReplyAll('');
} else {
draft = thread.createDraftReply('');
}
// 5. 作成した下書きに、準備した件名と完全なHTML本文をセットして更新する
const draftMessage = draft.getMessage();
draft.update(draftMessage.getTo(), replySubject, '', {
htmlBody: finalHtmlBody,
cc: draftMessage.getCc()
});
// 処理済みラベルと個別ラベルを付与
thread.addLabel(processedLabel);
const customLabelName = rule[COL_LABEL - 1];
if (customLabelName) {
let customLabel = GmailApp.getUserLabelByName(customLabelName);
if (!customLabel) {
customLabel = GmailApp.createLabel(customLabelName);
}
thread.addLabel(customLabel);
}
break;
}
}
}
2-3. プロジェクトを保存
貼り付けたら、エディタの上部にあるフロッピーディスクのアイコン(プロジェクトを保存)をクリックします。プロジェクト名を聞かれたら「Gmail自動返信スクリプト」など、分かりやすい名前を付けて保存してください。
GASコードの貼り付け方についての詳細説明はこちらの記事を参考に ↓

ステップ3:最後の仕上げ!自動で動かすための設定(トリガー)
さあ、あと一息です!最後に、このプログラムを動かすための「許可」と、「自動で動いてね」という「お願い(トリガー設定)」をします。ここが一番大事なステップです!
3-1. 初回実行と権限の承認(最重要ステップ!)
このプログラムが、あなたの代わりにGmailを操作して良いか、許可を与える作業です。
※この作業は初回だけになります。毎回する必要はありませんのでご安心してください。




「このアプリはGoogleで確認されていません」という、ちょっと怖い警告画面が表示されます。でも、心配しないでください!これは、あなたが今作ったばかりのプログラムだから表示されるだけで、安全です。左下の「詳細」をクリックしてください。



3-2. トリガーの設定(自動実行のお願い)
これで、プログラムを動かす準備が整いました。あとは、これを定期的に自動で動かすための設定をするだけです。

スクリプトエディタの左側メニューから「トリガー」(目覚まし時計のアイコン)をクリックします。


- 実行する関数を選択:
checkEmailsAndCreateDrafts
- 実行するデプロイを選択:
Head
- イベントのソースを選択:
時間主導型
- 時間ベースのトリガーのタイプを選択:
分ベースのタイマー
- 時間の間隔を選択(分):
15分ごと
(これより短くするとエラーになる可能性があるので、15分以上がおすすめです)

右下の「保存」ボタンをクリックしたらトリガーの設定は完了です。

トリガーが追加されました。
🎊 完成です!お疲れ様でした!
これで全ての設定は完了です! これからは、あなたが設定した15分ごとに、この賢いプログラムが自動的にあなたのGmailをチェックし、「ルール」シートの条件に合うメールが届けば、Gmailの「下書き」フォルダに自動で返信メールが作成されていきます。
あとは、時間がある時に下書きフォルダをチェックして、内容に問題がなければ送信ボタンを押すだけ。あの面倒だった定型文の入力作業からは、もう解放です!

「ルール」シートに必要事項を選択、入力して条件をまとめます。
- 有効/無効 → チェックが入っている場合にのみ動作します。
- ルール名 → 覚えやすい名称にしておきましょう。
- 条件:送信者アドレス → 送られてくる相手のメールアドレスを入力。
- 条件:件名(含む言葉) → 自動作成させたい文言を入力します。
- 条件:添付ファイル → 自動作成したい条件に添付ファイルの有無を選択します。
- 返信方法 → 返信時に全員に返信するか相手だけに返信するか選択します。
- 件名編集 → 返信時に件名の先頭、末尾に文言を追加するかを選択します。
- 追加する文言 → 件名に追加する文言を指定します。
- 返信メールの本文 → 返信メールの本文を入力します。
- 付与するラベル名 → 作成したメールにラベルを付けたい場合に指定します。
以下、動作確認の様子。

実際の業務で動作確認したのでモザイクだらけですが(汗)、設定したメールアドレスに添付ファイルがあり、件名に「御見積」のメールだけに反応しています。

下書きにはきちんとさっきの2件の返信が作成されています。件名には設定していた文言が追記されて作成されています。

下書きを見てみます。
全員に返信、件名に追記、署名追加、メールの履歴もきちんと作成できています。あとは必要箇所ちょっと修正して送信すれば返信が完了!という流れができました。
【番外編】もしエラーが出たら?AI(Gemini)に助けてもらおう!
「なんだかうまく動かない…」「エラーって表示されたけど、意味がわからない…」 大丈夫!そんな時のために、私たちにはGeminiという強い味方がいます。
もしスクリプトエディタの「実行数」でエラーが表示されたら、そのエラーメッセージをコピーして、Geminiにこう聞いてみましょう。
プロンプト例: 「GASでGmailの自動返信スクリプトを組んでいます。以下のエラーが出たのですが、原因と解決方法を初心者にも分かるように教えてください。 (ここにエラーメッセージを貼り付け)」
Geminiは、エラーの原因がコードのどの部分にあるのか、どう直せばいいのかを優しく教えてくれます。AIをどんどん頼って、楽しくシステムを育てていきましょう!

よくある質問 (FAQ)
- Q. なぜ「~済」というラベルが勝手に作られるのですか?
-
A. これはプログラムが「このメールはもう処理しましたよ」と覚えるための大切な目印です。このラベルがないと、同じメールに対して何度も返信下書きを作ってしまうのを防いでいます。
- Q. パソコンの電源を切っていても動きますか?
-
A. はい、動きます!このプログラムはGoogleのサーバー上で24時間365日、あなたのために働き続けます。あなたのパソコンの状態は一切関係ありません。
- Q. ルールを追加したい時はどうすればいいですか?
-
A. とても簡単です!スプレッドシートの「ルール」シートに、新しい行を追加して、条件や返信文を入力するだけです。プログラムを触る必要はありません。
まとめ:小さな自動化が、未来の大きな余裕を作る

今回は、GASとスプレッドシートを使って、Gmailの返信を自動化する仕組みを作ってみました。 最初は少し難しく感じたかもしれませんが、一度設定してしまえば、これからはずっと、このシステムがあなたの代わりに働き続けてくれます。
「請求書の確認メール、5分かかっていたのが0分になった」
一日たった5分の短縮でも、一ヶ月で約100分、一年ではなんと20時間もの時間を生み出します。この「小さな自動化」の積み重ねこそが、忙しい毎日の中に「新しい挑戦をするための時間」という、大きな余裕を生み出してくれるのです。
ぜひこのシステムを活用して、あなたの「Workstyle」をより快適なものに変えていってくださいね!