「Googleフォームの送信通知を、チームの複数人に送りたい」
「自動返信メールの内容を、もっと手軽に編集したい」
「これらを1つのスプレッドシートで管理できたら楽なのに……」

そんなお悩み、ありませんか?

この記事では、Google Apps Script(GAS)を使って、送信アドレスの管理・通知メールタイトル・本文、回答者への自動返信メールタイトル・本文を1つのスプレットシートでGoogleフォームと連結し設定する方法解説します。

プログラミング初心者の方でも大丈夫!今回は、話題の生成AIGASコードを作成してもらう方法も交えながら、誰でも簡単に実装できるように解説していきます。

※私はGemini PROを利用して作成しております。

この記事を読むメリット
  • スキマ時間で完成:自分でコードを書く必要なし。AIへの「指示」だけでシステムが完成します。
  • 運用がラク:通知先やメール本文を、スプレッドシート上でいつでも編集できます。
  • スキルアップ:2025年最新の「AIを活用した開発(AIコーディング)」のコツがわかります。

完成イメージ

Googleフォームに回答が届くと、連携したスプレッドシートの「設定シート」を参照し、以下のアクションを自動で行います。

管理者への通知: 複数メンバー(カンマ区切り)に一斉送信
回答者への返信: 相手の名前を入れた自動返信メールを送信

【設定シート】からいつでも、通知メールの宛先管理や、メール文章を変更することができます。回答者のメールアドレスを収集してない場合は、もちろん自動返信メールは届きません。

実装ステップ:Googleフォーム通知管理シートの作り方

1. Googleフォームとスプレットシートを連携します。

まずは、対象のGoogleフォームの「回答」タブから、スプレッドシートを作成・連携させておきましょう。

2.「設定」シートを作成する

スプレッドシートに新しいシートを追加し、シート名を「設定」に変更します。

以下の表をコピーして、A1セルから貼り付けてください。

シートサンプル

下記をコピーして【設定】シートの【A1】から貼り付けてください。

項目設定値
管理者通知先(カンマ区切り)adomin1@example.com, adomin2@example.com
管理者通知件名【新規】フォーム回答が届きました
管理者通知本文以下の内容で回答がありました。

{{回答内容}}
自動返信件名お問い合わせありがとうございます
自動返信本文{{お名前}} 様

この度はお問い合わせいただきありがとうございます。
確認後、担当よりご連絡いたします。
ポイント
本文内で {{回答内容}} や {{お名前}} と書いた部分は、実際の回答内容に自動で置き換わります。

3.スプレットシートからApps scriptでGASを設定する。

ここが自動化の心臓部です。

プレッドシート上部のメニューから 「拡張機能」>「Apps Script」 をクリックします。

開いたエディタに、最初からあるコードをすべて消して、以下のコードをコピー&ペーストしてください。

注意点
GoogleフォームからもApps scriptを設定することができますが、必ず「スプレットシートからApps scriptを開いてGASの設定をしないと動きませんのでご注意ください。

【コピペ用】GASコード

/**
 * フォーム送信時に実行されるメイン関数(スプレッドシート連携用)
 */
function onFormSubmit(e) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const settingsSheet = ss.getSheetByName("設定");
  
  if (!settingsSheet) {
    console.error("「設定」シートが見つかりません。");
    return;
  }

  // 1. 設定シートから情報を取得(見出しを飛ばして2行目から取得するように修正)
  const settings = {
    adminEmails: settingsSheet.getRange("B2").getValue(), // B2: 通知先メールアドレス
    adminSubject: settingsSheet.getRange("B3").getValue(), // B3: 通知件名
    adminBody:    settingsSheet.getRange("B4").getValue(), // B4: 通知本文
    replySubject: settingsSheet.getRange("B5").getValue(), // B5: 自動返信件名
    replyBody:    settingsSheet.getRange("B6").getValue()  // B6: 自動返信本文
  };

  // 2. 回答内容の取得
  const namedValues = e.namedValues;
  if (!namedValues) return;

  let responseText = "";
  let userEmail = "";
  let userName = "";

  // 全回答をテキスト化
  for (let question in namedValues) {
    const answer = namedValues[question][0]; 
    responseText += `【${question}】\n${answer}\n\n`;
    
    // 質問名に「メールアドレス」や「名前」が含まれる場合に取得
    if (question.includes("メールアドレス")) userEmail = answer;
    if (question.includes("名前") || question.includes("名")) userName = answer;
  }

  /**
   * 文言の置換と改行の整形
   */
  const formatText = (template) => {
    if (!template) return "";
    let text = template.toString();
    
    // {{回答内容}} と {{お名前}} を置換
    text = text.replace("{{回答内容}}", responseText)
               .replace("{{お名前}}", userName || "お客様");

    // その他の {{質問名}} も置換
    for (let question in namedValues) {
      text = text.split(`{{${question}}}`).join(namedValues[question][0]);
    }
    
    // 改行処理
    return text.replace(/\\n/g, "\n").replace(/\r\n/g, "\n").replace(/\r/g, "\n");
  };

  // 3. 管理者通知
  if (settings.adminEmails && settings.adminEmails !== "設定値") {
    GmailApp.sendEmail(
      settings.adminEmails, 
      settings.adminSubject, 
      formatText(settings.adminBody)
    );
  }

  // 4. 投稿者への自動返信
  if (userEmail && settings.replySubject) {
    GmailApp.sendEmail(
      userEmail, 
      settings.replySubject, 
      formatText(settings.replyBody)
    );
  }
}

/**
 * トリガー設定用
 */
function createTrigger() {
  const ss = SpreadsheetApp.getActive();
  const triggers = ScriptApp.getProjectTriggers();
  triggers.forEach(t => {
    if (t.getHandlerFunction() === 'onFormSubmit') ScriptApp.deleteTrigger(t);
  });
  
  ScriptApp.newTrigger('onFormSubmit')
      .forSpreadsheet(ss)
      .onFormSubmit()
      .create();
  
  console.log("トリガーの作成が完了しました。2行目以降の設定値を読み込みます。");
}

4. トリガーを設定する(重要!)

コードを貼り付けたら、一度だけ以下の操作を行います。

  1. エディタ上部の関数選択ボタン(デバッグの右側)で 「createTrigger」 を選択し、「実行」 をクリックします。
  2. 「承認が必要です」という画面が出るので、指示に従って許可してください(詳細は後述)。
  3. 実行ログに「トリガーの設定が完了しました!」と出れば成功です。

初回実行時の注意(承認画面)

初めてスクリプトを実行すると「承認が必要です(このアプリはGoogleで確認されていません)」という画面が表示されます。これは自作ツールを使う際の標準的な仕様です。以下の手順で進んでください。

  1. 「権限を確認」 をクリック
  2. 自分のGoogleアカウントを選択
  3. 警告画面が出たら、左下の 「詳細」 をクリック
  4. 展開された下部の 「(安全ではないページ)に移動」 をクリック
  5. 「許可」 をクリック

これで、あなたのスプレッドシートとGmailを連携させる準備が整いました。

そもそもGAS(Google Apps Script)って何?

GASは、Googleが開発したプログラミング言語です。「Googleの様々なサービス(Gmail、スプレッドシート、ドキュメントなど)を自動化・連携が得意なプログラムのことです。GASを生成AIに書いてもらうことができる現在は、アイディアさへあればプログラミングに詳しくなくても、様々な自動化を自分で作ることができます!

もちろんプログラミング知識があればもっと複雑なこともデバックする作業も大幅に削減できるので、これを気にプログラミングの基礎も学ぶこともおすすめします。

GASのベースとなっているJavaScriptは情報も多く、プログラミング初心者でも学びやすい言語です。

関連記事
Google Workspace自動化入門!GAS(JavaScript)プログラミング初心者のための4ステップ学習法

「AIがコードを書く時代、プログラミングは不要?」そう考えていませんか?実は、AIを真に使いこなすにはプログラミングの基礎知識が不可欠です。この記事では、プログラミングに何度も挫折した筆者が、JavaScriptの基礎を固め、GASで自在に業務を自動化できるようになった具体的な4ステップの学習法を全公開します。

【メイキング】生成AI×GASでGoogleフォーム通知管理シートができるまで

今回、私はGemini PROを使ってコードを作成しました。最初から完璧だったわけではありません。

  • 最初の指示: 「Googleフォームの通知を複数人に送り、内容をスプレッドシートで管理したい」
  • エラーの解決: 実行時にエラーが出たため、スプレッドシートのスクリーンショットをAIに見せて「セルの位置は合ってる?」と相談しました。

一番最初の相談プロンプト

Googleフォームが送信されたときに通知されるメールアドレスを複数人に送るアドレスや自動返信・送信通知メッセージをスプレットシートで管理したい

どんな感じに作るのがおすすめ?

ここでコードを実行したときにエラーが起きてしまい、シートの記載場所を間違えてそうだったので、AIにスプレットシートのスクリーンショットと一緒に間違ってないか確認しました。

セルの記載場所あってる?

やはり、シートの書き方がGASとずれていてプログラム実行ができなかった様です。

A1から書き始め、1行目には【項目】【設定値】と記載内容のタイトルを入れないといけないので修正しました。その後、書き方が合ってるか再度AIに確認してもらい。実行するとうまくいきました。

AIは、エラーメッセージや画面の画像を見せると、より的確なアドバイスをくれます。皆さんも、エラーが出たら怖がらずに「どこが間違ってる?」とAIに聞いてみてください!

まとめ

スプレッドシート1枚で通知先やメッセージを管理できると、運用の手間が劇的に減ります。

  1. フォームとシートを連携
  2. 「設定」シートを作成
  3. GASをコピペして実行

この3ステップで、あなた専用の自動通知システムが手に入ります。ぜひ試してみてくださいね!