フォーム回答からGmail下書きを自動作成するGASコマンド

GASGoogleフォームGmail下書き
フォーム回答からGmail下書きを自動作成するGASコマンドのサムネイル

Googleフォームで問い合わせや申込みを受けていると、次に面倒になるのがメール返信です。

完全自動送信までやると、宛先ミスや文面ミスが怖い。そこでおすすめなのが、フォーム回答からGmailの下書きだけを自動で作る形です。

送信は人が確認してから。GASに任せるのは、転記と下書き作成まで。個人運用や小さなチームなら、このくらいが一番使いやすいです。

できること

このGASコマンドでは、フォーム回答がスプレッドシートに追加されたタイミングで、Gmail下書きを自動作成します。

  • フォーム回答を読む
  • 名前、メール、用件を本文へ差し込む
  • Gmail下書きを作る
  • 処理済みステータスをシートへ残す

「フォームを見る → Gmailを開く → テンプレを貼る → 名前を直す」という流れを、かなり短くできます。

シートの準備

Googleフォームの回答先スプレッドシートに、以下の列がある前提で進めます。

  • タイムスタンプ
  • メールアドレス
  • お名前
  • 用件
  • 希望日
  • 処理状況

処理状況 は手動で追加しておきます。GASがここに 下書き作成済み と書き込みます。

コピペで使えるGASコマンド

スプレッドシートで 拡張機能 > Apps Script を開き、以下を貼り付けます。

const CONFIG = {
  sheetName: 'フォームの回答 1',
  statusHeader: '処理状況',
  fromName: 'GASおじラボ',
};

function setupFormDraftTrigger() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  ScriptApp.newTrigger('createDraftFromFormSubmit')
    .forSpreadsheet(ss)
    .onFormSubmit()
    .create();
}

function createDraftFromFormSubmit(e) {
  const sheet = e.range.getSheet();
  if (sheet.getName() !== CONFIG.sheetName) return;

  const row = e.range.getRow();
  const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
  const values = sheet.getRange(row, 1, 1, sheet.getLastColumn()).getValues()[0];
  const record = Object.fromEntries(headers.map((header, index) => [header, values[index]]));

  const statusCol = headers.indexOf(CONFIG.statusHeader) + 1;
  if (!statusCol) throw new Error('処理状況列が見つかりません');
  if (record[CONFIG.statusHeader]) return;

  const email = record['メールアドレス'];
  const name = record['お名前'] || 'お客様';
  const purpose = record['用件'] || 'お問い合わせ';
  const preferredDate = record['希望日'] || '未指定';

  if (!email) {
    sheet.getRange(row, statusCol).setValue('メールなし');
    return;
  }

  const subject = `【${CONFIG.fromName}】お問い合わせありがとうございます`;
  const body = [
    `${name} 様`,
    '',
    'お問い合わせありがとうございます。',
    `${CONFIG.fromName}です。`,
    '',
    `用件: ${purpose}`,
    `希望日: ${preferredDate}`,
    '',
    '内容を確認し、あらためてご連絡いたします。',
    '',
    'よろしくお願いいたします。',
  ].join('\n');

  GmailApp.createDraft(email, subject, body, {
    name: CONFIG.fromName,
  });

  sheet.getRange(row, statusCol).setValue('下書き作成済み');
}

最初に1回だけやること

貼り付けたら、setupFormDraftTrigger を1回実行します。

初回は権限確認が出ます。Gmail下書き作成とスプレッドシート操作の許可が必要です。

これで次回以降、フォーム回答が入るたびに createDraftFromFormSubmit が動きます。

安全に使うポイント

このコマンドの良いところは、メールを自動送信しないことです。

Gmailの下書きに止めておけば、送信前に宛先、名前、本文を確認できます。個人情報を扱う問い合わせや、金額・日程が絡む連絡では、この一手間を残すほうが安全です。

また、処理済みステータスをシートに残しているので、同じ回答に対して何度も下書きを作る事故も避けられます。

まとめ

フォーム、スプレッドシート、Gmail下書き。ここまでつなぐのがGASのうま味です。

外部SaaSを増やさなくても、Googleの中だけで小さな業務導線を作れます。まずは自動送信ではなく、下書き作成から始めるのがおすすめです。

GASおじラボでは、こうしたGoogle自動化テンプレを増やしています。もっと使ってみたい人は、GASおじラボのメンバーシップも見てみてください。