<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Googleフォーム &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/google%e3%83%95%e3%82%a9%e3%83%bc%e3%83%a0/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Sat, 04 Jul 2026 01:49:05 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.1</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>Googleフォーム &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Googleフォーム×GASで回答を自動通知・集計する方法｜コピペで動く3レシピ</title>
		<link>https://mashukabu.com/google-form-gas-auto-aggregate/</link>
					<comments>https://mashukabu.com/google-form-gas-auto-aggregate/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Fri, 12 Jun 2026 21:59:52 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[GAS]]></category>
		<category><![CDATA[Googleフォーム]]></category>
		<category><![CDATA[Webhook]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=8001</guid>

					<description><![CDATA[Googleフォームの回答をGASで自動通知・自動集計する方法を、コピペで動く3レシピで解説します。Slack通知・Gmail通知・カテゴリ別集計シート更新まで、フォーム送信時トリガーの設定方法と暴走対策もまとめて紹介します。]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Googleフォーム×GASで回答を自動通知・集計する方法｜コピペで動く3レシピ</h1>



<p class="wp-block-paragraph">「フォームに回答が来ても、誰も気づかない」「定例会議の前に毎回スプレッドシートを集計し直すのが地味に面倒」——Googleフォームを業務で使い始めると、ほとんどの人が一度はぶつかる悩みです。</p>



<p class="wp-block-paragraph">この記事では、<strong>Googleフォームの回答をスプレッドシートとGAS（Google Apps Script）で連携させて、Gmail通知・Slack通知・集計シート自動更新の3つを「コピペで動く形」で実装する方法</strong>を解説します。GASは入門レベル前提で、1本ずつ動かしながら読めるよう構成しました。</p>



<p class="wp-block-paragraph">GASのスクリプトエディタの開き方や保存・実行の基本操作は、シリーズ1本目で詳しく解説しています。GASに初めて触る方は先にこちらから読むとつまずきにくいです。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GAS入門｜スプレッドシート自動化レシピ5選</a></p>



<p class="wp-block-paragraph">なお、<strong>LINE Notifyは2025年3月末でサービス終了</strong>しているため、本記事では現行で誰でも使える「Slack Incoming Webhook」と「Gmail」を通知手段として採用しています。古い記事のコードでつまずいた経験がある方も、ここから読み直せば動くところまで戻れます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"></li><li><a href="#toc1" tabindex="0">GoogleフォームとGASを連携してできること</a><ol><li><a href="#toc2" tabindex="0">自動通知（Slack・Gmail・チャット）</a></li><li><a href="#toc3" tabindex="0">自動集計（別シートでのカテゴリ別カウント）</a></li><li><a href="#toc4" tabindex="0">関連処理の自動化（タスク登録・差し込み返信）</a></li></ol></li><li><a href="#toc5" tabindex="0">連携の前提｜フォーム回答スプレッドシートを準備する</a><ol><li><a href="#toc6" tabindex="0">フォーム回答先のスプレッドシートを開く</a></li><li><a href="#toc7" tabindex="0">拡張機能 → Apps Script を開く</a></li></ol></li><li><a href="#toc8" tabindex="0">レシピ1｜回答が来たらGmailに自動通知する（GAS）</a><ol><li><a href="#toc9" tabindex="0">コピペで動くサンプルコード</a></li><li><a href="#toc10" tabindex="0">コードのポイント解説</a></li><li><a href="#toc11" tabindex="0">フォーム送信時トリガーを設定する</a></li></ol></li><li><a href="#toc12" tabindex="0">レシピ2｜回答が来たらSlackに自動通知する（GAS Webhook）</a><ol><li><a href="#toc13" tabindex="0">事前準備：Slack Incoming Webhook URLを取得</a></li><li><a href="#toc14" tabindex="0">コピペで動くサンプルコード</a></li><li><a href="#toc15" tabindex="0">通知メッセージのカスタマイズ例</a></li></ol></li><li><a href="#toc16" tabindex="0">レシピ3｜カテゴリ別の回答件数を集計シートに自動更新する</a><ol><li><a href="#toc17" tabindex="0">集計シートの準備</a></li><li><a href="#toc18" tabindex="0">コピペで動くサンプルコード</a></li><li><a href="#toc19" tabindex="0">関数（COUNTIF）と組み合わせる場合との使い分け</a></li></ol></li><li><a href="#toc20" tabindex="0">フォーム送信時トリガーの設定方法と注意点</a><ol><li><a href="#toc21" tabindex="0">トリガーの設定手順</a></li><li><a href="#toc22" tabindex="0">トリガー暴走を防ぐ3つの基本ルール</a></li></ol></li><li><a href="#toc23" tabindex="0">スクリプトプロパティでWebhook URLを安全に管理する</a><ol><li><a href="#toc24" tabindex="0">スクリプトプロパティとは</a></li><li><a href="#toc25" tabindex="0">設定方法とコードからの呼び出し方</a></li></ol></li><li><a href="#toc26" tabindex="0">GoogleフォームとGAS連携でよくあるエラーと対処法</a><ol><li><a href="#toc27" tabindex="0">エラー1: 「TypeError: Cannot read properties of undefined」</a></li><li><a href="#toc28" tabindex="0">エラー2: 「Exception: Service Spreadsheets failed while accessing document」</a></li><li><a href="#toc29" tabindex="0">エラー3: 「Exception: Request failed for hooks.slack.com returned code 404」</a></li><li><a href="#toc30" tabindex="0">エラー4: 通知が同じ内容で2回・3回飛ぶ</a></li><li><a href="#toc31" tabindex="0">エラー5: 「このアプリは確認されていません」が消えない</a></li></ol></li><li><a href="#toc32" tabindex="0">まとめ｜Googleフォーム×GASで通知と集計を一気に自動化する</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">GoogleフォームとGASを連携してできること</span></h2>



<p class="wp-block-paragraph">Googleフォームは標準でも「回答をスプレッドシートに集める」機能を持っていますが、それだけだと「シートに溜まる」止まりで、能動的に何かが起きるわけではありません。GASを噛ませることで、はじめて以下のような自動化が可能になります。</p>



<h3 class="wp-block-heading"><span id="toc2">自動通知（Slack・Gmail・チャット）</span></h3>



<p class="wp-block-paragraph">回答が送信された瞬間に、指定の宛先へ通知を飛ばせます。本記事で扱うのはGmailとSlackですが、同じ仕組みでDiscordやMicrosoft Teamsにも応用できます（DiscordはWebhookの仕様がSlackとほぼ同じ）。</p>



<ul class="wp-block-list"><li>問い合わせフォーム → 担当者にGmail通知</li><li>申込フォーム → 営業チームのSlackチャンネルに通知</li><li>イベント参加登録 → 運営チャンネルに通知</li></ul>



<p class="wp-block-paragraph">「気づかない」を解消するだけで、対応スピードが半日単位で改善することも珍しくありません。</p>



<h3 class="wp-block-heading"><span id="toc3">自動集計（別シートでのカテゴリ別カウント）</span></h3>



<p class="wp-block-paragraph">回答が来るたびに、<strong>別シートに置いた集計表のカウントを1ずつ加算する</strong>処理を自動化できます。会議前の手動集計から解放され、いつ見ても最新の数字が乗っている状態を作れます。</p>



<p class="wp-block-paragraph">スプレッドシート関数のCOUNTIFでも同じことはできますが、GASを使う利点は「集計時に他の処理（通知・条件分岐）を一緒にやれる」点です。レシピ3で詳しく扱います。</p>



<h3 class="wp-block-heading"><span id="toc4">関連処理の自動化（タスク登録・差し込み返信）</span></h3>



<p class="wp-block-paragraph">応用範囲はもっと広く、たとえば以下のような連携もGASなら実装できます。</p>



<ul class="wp-block-list"><li>回答内容に応じて自動返信メールを送る（フォーム標準の返信機能より柔軟）</li><li>特定キーワードを含む回答だけを別シートに転記する</li><li>Googleカレンダーに予定を自動登録する</li></ul>



<p class="wp-block-paragraph">本記事では3つの基本レシピに絞りますが、土台が同じなので、ここで紹介するレシピさえ動けば応用は難しくありません。</p>



<h2 class="wp-block-heading"><span id="toc5">連携の前提｜フォーム回答スプレッドシートを準備する</span></h2>



<p class="wp-block-paragraph">GASでフォーム連携を始める前に、<strong>「回答先のスプレッドシート」</strong>を準備しておきます。Googleフォーム単体ではなく、フォームの回答が流れ込むスプレッドシートが起点になる点が重要です。</p>



<h3 class="wp-block-heading"><span id="toc6">フォーム回答先のスプレッドシートを開く</span></h3>



<ol class="wp-block-list"><li>Googleフォームの編集画面を開く</li><li>上部タブ「回答」をクリック</li><li>右側の緑色の「スプレッドシートにリンク」アイコンをクリック</li><li>「新しいスプレッドシートを作成」または「既存のスプレッドシートを選択」</li></ol>



<p class="wp-block-paragraph">これで、フォームに回答が届くたびに、指定したスプレッドシートに行が追加されるようになります。</p>



<figure class="wp-block-table"><table><thead><tr><th>タイムスタンプ</th><th>お名前</th><th>カテゴリ</th><th>内容</th></tr></thead><tbody><tr><td>2026/05/09 10:23:11</td><td>田中</td><td>質問</td><td>営業時間を教えてください</td></tr><tr><td>2026/05/09 10:45:02</td><td>佐藤</td><td>申込</td><td>サービスAを申し込みたい</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">1行目がヘッダー（質問のテキスト）、2行目以降が回答です。GASからは<strong>この「質問テキスト」をキーに回答内容を取り出します</strong>。後でコードを書くときに重要になるので、質問のテキストはあらかじめ確定させておくと安全です。</p>



<h3 class="wp-block-heading"><span id="toc7">拡張機能 → Apps Script を開く</span></h3>



<p class="wp-block-paragraph">回答先スプレッドシートを開いた状態で、メニューから次の手順でスクリプトエディタを開きます。</p>



<ol class="wp-block-list"><li>スプレッドシート上部メニュー「拡張機能」をクリック</li><li>「Apps Script」を選択</li><li>別タブでエディタが開く</li></ol>



<p class="wp-block-paragraph">ここから先は基本的に1本目記事の延長です。エディタの基本操作（保存・実行・ログ表示）に不安がある方は、こちらを先に押さえておきましょう。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GAS入門｜スプレッドシート自動化レシピ5選</a></p>



<h2 class="wp-block-heading"><span id="toc8">レシピ1｜回答が来たらGmailに自動通知する（GAS）</span></h2>



<p class="wp-block-paragraph">最も簡単で、追加の設定が要らないレシピです。GmailApp はGASにビルトインされている上に、外部のWebhook URLを取得する手間もありません。<strong>まずはこのレシピで「フォーム送信トリガーが発火する感覚」を掴んでから、レシピ2に進む</strong>のがおすすめです。</p>



<h3 class="wp-block-heading"><span id="toc9">コピペで動くサンプルコード</span></h3>



<p class="wp-block-paragraph">スクリプトエディタに貼り付けて、<code>'your-address@example.com'</code> の部分だけ自分の通知先メールアドレスに書き換えてください。</p>



<pre class="wp-block-code"><code>// --- レシピ1: フォーム回答をGmailで通知 ---
function onFormSubmitGmail(e) {
  try {
    // --- 通知先メールアドレス（自分のアドレスに書き換える） ---
    const toAddress = 'your-address@example.com';

    // --- 質問名をキーにした回答オブジェクト ---
    const namedValues = e.namedValues;

    // --- 件名と本文を組み立て ---
    const subject = '[フォーム] 新しい回答が届きました';
    const body = Object.entries(namedValues)
      .map(function(entry) {
        return entry[0] + ': ' + entry[1].join(', ');
      })
      .join('n');

    // --- メール送信 ---
    GmailApp.sendEmail(toAddress, subject, body);
  } catch (err) {
    // --- エラー時もトリガーを止めない（暴走対策） ---
    console.log('Gmail通知エラー: ' + err.message);
  }
}</code></pre>



<h3 class="wp-block-heading"><span id="toc10">コードのポイント解説</span></h3>



<ul class="wp-block-list"><li><strong><code>e.namedValues</code></strong>: フォーム送信時のイベントオブジェクト <code>e</code> が持っているプロパティで、<strong>質問テキストをキー、回答を配列の形で持つオブジェクト</strong>です。<code>e.values</code> と違って列順に依存しないため、質問の追加・並び替えに強くなります</li><li><strong><code>Object.entries(...).map(...)</code></strong>: 全ての質問と回答を「質問: 回答」の形に整形し、改行で連結します</li><li><strong><code>entry[1].join(', ')</code></strong>: 回答が配列形式（チェックボックス複数選択など）の場合に備えて、カンマ区切りで結合しています</li><li><strong><code>try/catch</code></strong>: トリガー実行中にエラーが出ても、Googleからのエラー通知メールが暴走しないようにする最低限のガードです（後述）</li></ul>



<h3 class="wp-block-heading"><span id="toc11">フォーム送信時トリガーを設定する</span></h3>



<p class="wp-block-paragraph">コードを貼り付けて保存しただけでは、まだフォーム送信時に動きません。<strong>トリガーの設定</strong>が別途必要です。</p>



<ol class="wp-block-list"><li>スクリプトエディタ左メニューの <strong>時計アイコン（トリガー）</strong> をクリック</li><li>右下の「<strong>トリガーを追加</strong>」をクリック</li><li>以下のように設定:</li></ol>



<ul class="wp-block-list"><li>実行する関数: <code>onFormSubmitGmail</code></li><li>実行するデプロイ: <code>Head</code></li><li>イベントのソース: <code>スプレッドシートから</code></li><li>イベントの種類: <code>フォーム送信時</code></li></ul>



<ol class="wp-block-list"><li>「保存」をクリック</li><li>初回のみ承認画面が表示されるので、自分のGoogleアカウントで承認</li></ol>



<p class="wp-block-paragraph">承認画面で「このアプリは確認されていません」が出るのは、自作スクリプトでは正常な挙動です。「詳細」→「（プロジェクト名）に移動（安全ではないページ）」をクリックして進めます。</p>



<p class="wp-block-paragraph">設定後、テスト用に1件フォームを送信して、メールが届けば成功です。</p>



<h2 class="wp-block-heading"><span id="toc12">レシピ2｜回答が来たらSlackに自動通知する（GAS Webhook）</span></h2>



<p class="wp-block-paragraph">チームでフォームを運用しているなら、Gmailよりも<strong>Slackチャンネルへの通知のほうが見落としが減ります</strong>。Slack Incoming Webhookを使えば、外部APIキーやアプリ承認の手間なく、チャンネル単位で通知を飛ばせます。</p>



<h3 class="wp-block-heading"><span id="toc13">事前準備：Slack Incoming Webhook URLを取得</span></h3>



<p class="wp-block-paragraph">Slack側で以下の手順でWebhook URLを発行します（管理者権限が必要な場合があります）。</p>



<ol class="wp-block-list"><li>Slack ワークスペースで「Apps」→「アプリを管理」→「Incoming Webhooks」を検索</li><li>「Slackに追加」をクリック</li><li>通知先のチャンネルを選択</li><li><strong>「Webhook URL」をコピーして安全な場所にメモ</strong>（後で使います）</li></ol>



<p class="wp-block-paragraph">Webhook URLは <code>https://hooks.slack.com/services/T.../B.../...</code> のような形式です。<strong>このURLが漏れると誰でもそのチャンネルに投稿できてしまうため、絶対にコードに直書きしないでください</strong>。次のH2で扱う「スクリプトプロパティ」で管理します。</p>



<h3 class="wp-block-heading"><span id="toc14">コピペで動くサンプルコード</span></h3>



<pre class="wp-block-code"><code>// --- レシピ2: フォーム回答をSlackで通知 ---
function onFormSubmitSlack(e) {
  try {
    // --- スクリプトプロパティから Webhook URL を取得 ---
    const webhookUrl = PropertiesService
      .getScriptProperties()
      .getProperty('SLACK_WEBHOOK_URL');

    if (!webhookUrl) {
      throw new Error('SLACK_WEBHOOK_URL が未設定です');
    }

    // --- 質問と回答を箇条書き形式に整形 ---
    const lines = Object.entries(e.namedValues)
      .map(function(entry) {
        return '• ' + entry[0] + ': ' + entry[1].join(', ');
      })
      .join('n');

    // --- Slack に送信するペイロード ---
    const payload = {
      text: '*新しい回答が届きました*n' + lines
    };

    // --- HTTP POST で Webhook に送信 ---
    UrlFetchApp.fetch(webhookUrl, {
      method: 'post',
      contentType: 'application/json',
      payload: JSON.stringify(payload),
      muteHttpExceptions: true
    });
  } catch (err) {
    console.log('Slack通知エラー: ' + err.message);
  }
}</code></pre>



<p class="wp-block-paragraph">このコードをそのまま実行する前に、<strong>スクリプトプロパティに <code>SLACK_WEBHOOK_URL</code> を登録</strong>しておく必要があります。手順は次のH2「スクリプトプロパティでWebhook URLを安全に管理する」で詳しく説明します。先にスクリプトプロパティを設定してから、レシピ1と同じ手順でフォーム送信時トリガーを <code>onFormSubmitSlack</code> に対して設定してください。</p>



<h3 class="wp-block-heading"><span id="toc15">通知メッセージのカスタマイズ例</span></h3>



<p class="wp-block-paragraph">Slack通知は <code>text</code> だけでも機能しますが、強調や絵文字を入れて見やすくすることもできます。以下のように <code>payload</code> を組み替えるだけです。</p>



<pre class="wp-block-code"><code>// --- 強調と絵文字入りメッセージ ---
const payload = {
  text: ':bell: *新しい回答が届きました*',
  attachments: [
    {
      color: '#36a64f',
      text: lines
    }
  ]
};</code></pre>



<p class="wp-block-paragraph"><code>attachments</code> を使うと、左側に色付きの縦線が付いて視認性が上がります。最初は <code>text</code> のみで動かして、慣れてからカスタマイズに進むのがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc16">レシピ3｜カテゴリ別の回答件数を集計シートに自動更新する</span></h2>



<p class="wp-block-paragraph">通知に加えて、<strong>回答数のリアルタイム集計</strong>まで自動化するレシピです。「会議前にピボットを作り直す」「先週の問い合わせ件数を手動で数える」といった作業が消えます。</p>



<h3 class="wp-block-heading"><span id="toc17">集計シートの準備</span></h3>



<p class="wp-block-paragraph">回答先スプレッドシートに、<code>集計</code> という名前の新しいシートを作成しておきます（コードで自動作成もできますが、最初は手動で作っておくと挙動が見えやすいです）。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列</th><th>B列</th></tr></thead><tbody><tr><td>カテゴリ</td><td>件数</td></tr><tr><td>質問</td><td>0</td></tr><tr><td>申込</td><td>0</td></tr><tr><td>苦情</td><td>0</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">1行目はヘッダー、2行目以降にカテゴリ名と初期件数（0）を入れておきます。フォームの「カテゴリ」質問で選ばれる選択肢と一致させてください。</p>



<h3 class="wp-block-heading"><span id="toc18">コピペで動くサンプルコード</span></h3>



<pre class="wp-block-code"><code>// --- レシピ3: カテゴリ別件数を集計シートで自動カウント ---
function onFormSubmitAggregate(e) {
  try {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = ss.getSheetByName('集計');
    if (!sheet) {
      throw new Error('「集計」シートが見つかりません');
    }

    // --- 回答からカテゴリを取り出す（質問名は実際のフォームに合わせる） ---
    const category = e.namedValues['カテゴリ']
      ? e.namedValues['カテゴリ'][0]
      : '未分類';

    // --- 集計シート全体の値を取得 ---
    const data = sheet.getDataRange().getValues();
    let updated = false;

    // --- 既存カテゴリ行のカウントを+1 ---
    for (let i = 1; i &lt; data.length; i++) {
      if (data[i][0] === category) {
        sheet.getRange(i + 1, 2).setValue(data[i][1] + 1);
        updated = true;
        break;
      }
    }

    // --- カテゴリ行が無ければ最終行に追記 ---
    if (!updated) {
      sheet.appendRow([category, 1]);
    }
  } catch (err) {
    console.log('集計エラー: ' + err.message);
  }
}</code></pre>



<p class="wp-block-paragraph">このコードもレシピ1・2と同じく、<strong>フォーム送信時トリガーを <code>onFormSubmitAggregate</code> に対して設定</strong>することで自動発火します。</p>



<p class="wp-block-paragraph">ポイント:</p>



<ul class="wp-block-list"><li><strong><code>e.namedValues['カテゴリ']</code></strong> の <code>'カテゴリ'</code> 部分は、<strong>フォームの質問テキストと完全一致</strong>している必要があります。質問名を変更したらコードも合わせて変更します</li><li>想定外のカテゴリ（自由記述や新しい選択肢）が来ても、<code>appendRow</code> で末尾に追加されるので集計から漏れません</li><li><code>getDataRange().getValues()</code> でシート全体を一度に読むため、件数が多くてもAPI呼び出しは1回で済みます</li></ul>



<h3 class="wp-block-heading"><span id="toc19">関数（COUNTIF）と組み合わせる場合との使い分け</span></h3>



<p class="wp-block-paragraph">「これ、わざわざGASで書かなくてもCOUNTIFでよくない？」という疑問は当然出ます。実際、<strong>単純な件数集計だけならCOUNTIF関数のほうが圧倒的に楽</strong>です。GAS実装が活きるのは以下のようなケースです。</p>



<figure class="wp-block-table"><table><thead><tr><th>やりたいこと</th><th>おすすめ手段</th></tr></thead><tbody><tr><td>単純なカテゴリ別件数</td><td>COUNTIF関数</td></tr><tr><td>件数 + Slack通知を同時に</td><td>GAS（レシピ2と統合）</td></tr><tr><td>条件によって書き込み先シートを分ける</td><td>GAS</td></tr><tr><td>件数が一定数を超えたらアラート</td><td>GAS</td></tr><tr><td>関数でセルを汚したくない（参照崩れリスク回避）</td><td>GAS</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ロジックが分岐する瞬間にGASの真価が出ます。逆に、純粋に件数だけ見たいなら、まずCOUNTIFで作ってからGASに育てる流れでも遅くありません。</p>



<h2 class="wp-block-heading"><span id="toc20">フォーム送信時トリガーの設定方法と注意点</span></h2>



<p class="wp-block-paragraph">3つのレシピで何度か出てきた「フォーム送信時トリガー」を、ここで一度まとめて整理します。<strong>トリガーの設定ミスや重複登録は、GAS自動化で最もハマりやすい落とし穴</strong>です。</p>



<h3 class="wp-block-heading"><span id="toc21">トリガーの設定手順</span></h3>



<ol class="wp-block-list"><li>スクリプトエディタ左メニューの<strong>時計アイコン</strong>をクリック</li><li>右下「<strong>トリガーを追加</strong>」</li><li>設定項目:</li></ol>



<ul class="wp-block-list"><li><strong>実行する関数</strong>: 動かしたい関数名（例: <code>onFormSubmitGmail</code>）</li><li><strong>実行するデプロイ</strong>: <code>Head</code></li><li><strong>イベントのソース</strong>: <code>スプレッドシートから</code></li><li><strong>イベントの種類</strong>: <code>フォーム送信時</code></li><li>失敗通知設定: <code>毎日通知を受け取る</code>（デフォルト推奨）</li></ul>



<ol class="wp-block-list"><li>「保存」→ 初回のみ承認</li></ol>



<p class="wp-block-paragraph">設定後、トリガー一覧画面に戻り、<strong>狙った関数のトリガーが1つだけ並んでいることを確認</strong>してください。</p>



<h3 class="wp-block-heading"><span id="toc22">トリガー暴走を防ぐ3つの基本ルール</span></h3>



<p class="wp-block-paragraph">GAS連携で最もやってはいけないのが「トリガー暴走」です。設定ミス1つで、フォーム1回の送信で何通も通知が飛んだり、エラー通知メールで受信箱が埋まったりします。以下の3つのルールを守れば、大半のトラブルは避けられます。</p>



<h4 class="wp-block-heading">ルール1: 1関数につきトリガーは1つだけ</h4>



<p class="wp-block-paragraph">開発中に「動かない」と思って何度もトリガーを追加してしまい、気づくと同じ関数のトリガーが3つ並んでいる——あるあるです。1回の送信で同じ通知が3回飛びます。</p>



<p class="wp-block-paragraph">対策: コードを修正したときは、トリガー一覧画面で<strong>古いトリガーが残っていないか</strong>を必ず確認してください。重複していたら、不要な行の右側「⋮」→「トリガーを削除」で消します。</p>



<h4 class="wp-block-heading">ルール2: 関数の冒頭で必ず try/catch</h4>



<p class="wp-block-paragraph">GASのトリガーは、関数内でエラーが出ると「実行失敗通知メール」をGoogleが自動送信します。さらに悪いことに、フォーム送信が連続するとこの通知メールも連続で届き、受信箱が埋まります。</p>



<pre class="wp-block-code"><code>function onFormSubmitGmail(e) {
  try {
    // --- 本来の処理 ---
  } catch (err) {
    console.log('エラー: ' + err.message);
  }
}</code></pre>



<p class="wp-block-paragraph">このように <strong><code>try/catch</code> で全体を包み、エラーは <code>console.log</code> で記録するだけにしておく</strong>と、トリガーは正常終了扱いになり、暴走通知が止まります。</p>



<h4 class="wp-block-heading">ルール3: トリガーから別のトリガーを呼び出さない</h4>



<p class="wp-block-paragraph">たとえば「フォーム送信時トリガー」内でセルに値を書き込み、それが別の <code>onEdit</code> トリガーを発火させて……という連鎖は、簡単に無限ループに発展します。</p>



<p class="wp-block-paragraph">対策: トリガーから呼ばれる関数では、<strong>意図しない <code>onEdit</code> 系トリガーが別途設定されていないか</strong>を必ず確認してください。1つのスプレッドシートで複数の自動化を組む場合は、トリガー間の依存関係を紙に書き出してから実装するのがおすすめです。</p>



<h2 class="wp-block-heading"><span id="toc23">スクリプトプロパティでWebhook URLを安全に管理する</span></h2>



<p class="wp-block-paragraph">レシピ2のSlack通知で前提となっていた「スクリプトプロパティ」を、ここで詳しく扱います。<strong>Webhook URLやAPIキーをコードに直書きするのは絶対NG</strong>で、その代替手段がスクリプトプロパティです。</p>



<h3 class="wp-block-heading"><span id="toc24">スクリプトプロパティとは</span></h3>



<p class="wp-block-paragraph">スクリプトプロパティは、GASプロジェクトに紐づいた<strong>キーバリュー型の設定保管庫</strong>です。コードの外側に値を置けるため、以下のメリットがあります。</p>



<ul class="wp-block-list"><li>コードをGitHubや社内Wikiに公開しても、Webhook URLが漏れない</li><li>環境ごと（本番・テスト）に値を切り替えやすい</li><li>スクリプト実行時に <code>PropertiesService</code> 経由で取り出せる</li></ul>



<p class="wp-block-paragraph">スプレッドシートのセルとは別物なので、<strong>通常の操作では値が見えない</strong>点も安全性に寄与しています。</p>



<h3 class="wp-block-heading"><span id="toc25">設定方法とコードからの呼び出し方</span></h3>



<p class="wp-block-paragraph">設定はスクリプトエディタの設定画面から行います。</p>



<ol class="wp-block-list"><li>スクリプトエディタ左メニューの<strong>歯車アイコン（プロジェクトの設定）</strong>をクリック</li><li>下にスクロールして「<strong>スクリプト プロパティ</strong>」セクションへ</li><li>「スクリプト プロパティを追加」をクリック</li><li>以下のように入力:</li></ol>



<ul class="wp-block-list"><li>プロパティ: <code>SLACK_WEBHOOK_URL</code></li><li>値: <code>https://hooks.slack.com/services/...</code>（コピーしたWebhook URL）</li></ul>



<ol class="wp-block-list"><li>「スクリプト プロパティを保存」</li></ol>



<p class="wp-block-paragraph">コードからは <code>PropertiesService.getScriptProperties().getProperty('キー名')</code> で取り出します。レシピ2のサンプルでは以下の3行で読み出していました。</p>



<pre class="wp-block-code"><code>const webhookUrl = PropertiesService
  .getScriptProperties()
  .getProperty('SLACK_WEBHOOK_URL');</code></pre>



<p class="wp-block-paragraph">複数の値（例: <code>GMAIL_TO</code>, <code>DISCORD_WEBHOOK_URL</code>）を扱う場合も、全て同じスクリプトプロパティに登録して、関数ごとに必要なキーを取り出すのが定石です。</p>



<h2 class="wp-block-heading"><span id="toc26">GoogleフォームとGAS連携でよくあるエラーと対処法</span></h2>



<p class="wp-block-paragraph">実装中に高確率で出るエラーを、上から順に潰せる形でまとめます。</p>



<h3 class="wp-block-heading"><span id="toc27">エラー1: 「TypeError: Cannot read properties of undefined」</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: <code>e.namedValues['カテゴリ']</code> のように指定した質問名が、フォームの実際の質問テキストと一致していない。質問名にスペースが含まれていたり、絵文字が入っていたりすると詰みやすいです。</p>



<p class="wp-block-paragraph"><strong>対処</strong>: スクリプトエディタで以下のコードを単発実行し、実際の <code>namedValues</code> のキー一覧を確認してください。</p>



<pre class="wp-block-code"><code>function debugCheckKeys() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
  console.log(headers);
}</code></pre>



<p class="wp-block-paragraph">ログに表示された通りの文字列を、コードの <code>e.namedValues['...']</code> に貼り付け直します。</p>



<h3 class="wp-block-heading"><span id="toc28">エラー2: 「Exception: Service Spreadsheets failed while accessing document」</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: スプレッドシートのアクセス権限が不足している、または承認画面で適切に許可されていない。</p>



<p class="wp-block-paragraph"><strong>対処</strong>: トリガーを一度削除して、関数を手動実行（再生ボタン）して承認をやり直します。承認画面で「詳細」→「安全ではないページに移動」→「許可」の手順を踏んでください。</p>



<h3 class="wp-block-heading"><span id="toc29">エラー3: 「Exception: Request failed for hooks.slack.com returned code 404」</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: Slack Webhook URLが無効、または削除済み。</p>



<p class="wp-block-paragraph"><strong>対処</strong>: Slack側でWebhookを再発行し、新しいURLでスクリプトプロパティを更新してください。<code>muteHttpExceptions: true</code> を付けていると例外は出ませんが、ログには記録されているので <code>console.log</code> で確認できます。</p>



<h3 class="wp-block-heading"><span id="toc30">エラー4: 通知が同じ内容で2回・3回飛ぶ</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: トリガーが重複登録されている。</p>



<p class="wp-block-paragraph"><strong>対処</strong>: 時計アイコンからトリガー一覧を開き、同じ関数のトリガーが2行以上ある場合は1つを残して削除します。</p>



<h3 class="wp-block-heading"><span id="toc31">エラー5: 「このアプリは確認されていません」が消えない</span></h3>



<p class="wp-block-paragraph"><strong>原因</strong>: GAS自作スクリプトの正常な挙動です。Googleの審査を通したアプリではないため、毎回承認のたびにこの画面が出ます。</p>



<p class="wp-block-paragraph"><strong>対処</strong>: 「詳細」→「（プロジェクト名）に移動（安全ではないページ）」をクリックして進めてください。<strong>自分で書いたスクリプト以外には、絶対にこの操作をしないでください</strong>。</p>



<h2 class="wp-block-heading"><span id="toc32">まとめ｜Googleフォーム×GASで通知と集計を一気に自動化する</span></h2>



<p class="wp-block-paragraph">ここまで、Googleフォームの回答をGASで連携させる3つのレシピを見てきました。最後にポイントを整理します。</p>



<ul class="wp-block-list"><li><strong>レシピ1（Gmail通知）</strong>: 追加設定なしで動く。最初の動作確認に最適</li><li><strong>レシピ2（Slack通知）</strong>: チームでの共有に強い。Webhook URLは必ずスクリプトプロパティ管理</li><li><strong>レシピ3（集計シート自動更新）</strong>: COUNTIFでは届かない、条件分岐や通知連動の場面で威力を発揮</li><li><strong>トリガー設定</strong>: 「フォーム送信時」を選ぶ。重複登録に注意し、必ず <code>try/catch</code> で囲む</li><li><strong>LINE Notifyは2025年3月末で終了</strong>しているため、本記事では非掲載。代替はSlack + Gmailで十分</li></ul>



<p class="wp-block-paragraph">GASの基本操作（保存・実行・ログ）に不安がある場合は、シリーズ1本目の入門記事で体得しておくと、本記事のコードがより理解しやすくなります。</p>



<p class="wp-block-paragraph"><a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GAS入門｜スプレッドシート自動化レシピ5選</a></p>



<p class="wp-block-paragraph">次のステップとしては、<strong>フォームに連動した自動返信メール</strong>や、<strong>回答内容に応じた条件分岐通知</strong>にチャレンジするのがおすすめです。本記事のコードはどれも <code>try/catch</code> と <code>e.namedValues</code> という共通の土台に乗っているので、追加機能は同じ構造の中に書き足していけます。</p>



<p class="wp-block-paragraph">「気づかない」「集計が手間」がなくなるだけで、Googleフォームの活用範囲は劇的に広がります。まずはレシピ1から、自分の手元のスプレッドシートで動かしてみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/google-form-gas-auto-aggregate/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>GASでGoogleフォームの予約をカレンダーに自動登録｜会議室・面談予約の受付を自動化</title>
		<link>https://mashukabu.com/gas-form-reservation-google-calendar/</link>
					<comments>https://mashukabu.com/gas-form-reservation-google-calendar/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 09 Jun 2026 01:45:35 +0000</pubDate>
				<category><![CDATA[仕事効率化]]></category>
		<category><![CDATA[GAS]]></category>
		<category><![CDATA[Google Apps Script]]></category>
		<category><![CDATA[Googleカレンダー]]></category>
		<category><![CDATA[Googleフォーム]]></category>
		<category><![CDATA[予約管理]]></category>
		<category><![CDATA[自動化]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7877</guid>

					<description><![CDATA[Googleフォームで受け付けた予約（希望日時・氏名・用件）を、GASでGoogleカレンダーの予定として自動登録する方法をコピペ可能なコード付きで解説します。onFormSubmitトリガーで回答送信と同時に登録し、予約者への確認メール送信やダブルブッキング検知まで対応。会議室予約・面談受付・設備貸出の受付業務をまるごと自動化できます。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">会議室の予約、面談の受付、備品の貸出申請。こうしたフロント業務を「Googleフォームで受け付けてはいるけれど、結局その内容を見ながら手作業でカレンダーに予定を入れている」という方は多いのではないでしょうか。</p>



<p class="wp-block-paragraph">フォームの回答を1件ずつ確認してカレンダーに転記する作業は、件数が増えるほど時間を取られますし、<strong>転記ミスやダブルブッキング</strong>の原因にもなります。</p>



<p class="wp-block-paragraph">この記事では、Googleフォームで受け付けた予約（希望日時・氏名・用件）を、GAS（Google Apps Script）を使ってGoogleカレンダーに自動登録する仕組みを作ります。</p>



<p class="wp-block-paragraph">フォームが送信された瞬間にカレンダーへ予定が入り、予約者には確認メールが自動で届く。さらにダブルブッキングを検知して弾く応用まで、コピペで動くコード付きで解説します。</p>



<p class="wp-block-paragraph">GASをはじめて触る方は、先に<a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GAS入門｜スプレッドシート自動化のはじめの一歩</a>に目を通しておくと、スクリプトエディタの開き方や保存・実行の流れがスムーズに理解できます。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-2" checked><label class="toc-title" for="toc-checkbox-2">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">完成イメージと全体の流れ</a></li><li><a href="#toc2" tabindex="0">準備：フォームと回答スプレッドシートを用意する</a></li><li><a href="#toc3" tabindex="0">カレンダーに自動登録する基本コードを書く</a></li><li><a href="#toc4" tabindex="0">フォーム送信時トリガーを設定する</a></li><li><a href="#toc5" tabindex="0">予約者へ確認メールを自動送信する</a></li><li><a href="#toc6" tabindex="0">ダブルブッキングを検知して弾く【応用】</a></li><li><a href="#toc7" tabindex="0">まとめ：受付業務はGASで自動化できる</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">完成イメージと全体の流れ</span></h2>



<p class="wp-block-paragraph">まず、これから作る仕組みの全体像を押さえておきましょう。やることはシンプルで、次の3ステップです。</p>



<ol class="wp-block-list"><li>Googleフォームで予約を受け付ける（希望日時・氏名・用件などを質問項目にする）</li><li>フォームの回答先スプレッドシートにGASを書く</li><li>「フォーム送信時」のトリガーを設定し、回答が来るたびにカレンダーへ自動登録する</li></ol>



<p class="wp-block-paragraph">ポイントは、GASを<strong>フォームそのものではなく、回答が貯まるスプレッドシート側に書く</strong>ことです。Googleフォームを作ると「回答」タブからスプレッドシートを連携できますが、そのスプレッドシートに紐づくスクリプトを使うと、回答内容を扱いやすくなります。</p>



<p class="wp-block-paragraph">処理の流れを図で確認してみましょう。</p>



<pre class="wp-block-code"><code>[予約者] フォームに入力・送信
      ↓
[フォーム] 回答をスプレッドシートに記録
      ↓
[GAS] onFormSubmit トリガーが発火
      ↓
[GAS] 回答内容を読み取り → カレンダーに予定を作成
      ↓
[GAS] 予約者へ確認メールを送信</code></pre>



<h2 class="wp-block-heading"><span id="toc2">準備：フォームと回答スプレッドシートを用意する</span></h2>



<p class="wp-block-paragraph">最初に、予約を受け付けるGoogleフォームを作ります。今回は会議室予約を例に、次の質問項目を用意します。</p>



<ul class="wp-block-list"><li><strong>氏名</strong>（記述式・短文）</li><li><strong>メールアドレス</strong>（記述式・短文／確認メールの送信先になります）</li><li><strong>予約希望日</strong>（日付）</li><li><strong>開始時刻</strong>（時刻）</li><li><strong>利用時間（分）</strong>（プルダウン：30 / 60 / 90 / 120 など）</li><li><strong>用件</strong>（記述式・段落）</li></ul>



<p class="wp-block-paragraph">フォーム自体の作り方の基本は<a href="https://mashukabu.com/google-form-how-to-create/">Googleフォームの作り方入門</a>を参考にしてください。</p>



<p class="wp-block-paragraph">フォームができたら、編集画面の「回答」タブにある「スプレッドシートにリンク」をクリックして、回答先のスプレッドシートを作成します。これでフォームが送信されるたびに、1行ずつ回答がスプレッドシートに追記されるようになります。</p>



<p class="wp-block-paragraph">スプレッドシートの1行目（ヘッダー）は、フォームの質問順に次のとおりです。</p>



<figure class="wp-block-table"><table><thead><tr><th>A</th><th>B</th><th>C</th><th>D</th><th>E</th><th>F</th><th>G</th></tr></thead><tbody><tr><td>タイムスタンプ</td><td>氏名</td><td>メールアドレス</td><td>予約希望日</td><td>開始時刻</td><td>利用時間（分）</td><td>用件</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">A列の「タイムスタンプ」はフォームが自動で付ける送信日時です。B列以降が、自分で作った質問の回答になります。</p>



<p class="wp-block-paragraph"><strong>列の順番はコードの中で位置指定して読み取る</strong>ので、この並びをしっかり確認しておいてください。質問を入れ替えると列もずれるので注意します。</p>



<h2 class="wp-block-heading"><span id="toc3">カレンダーに自動登録する基本コードを書く</span></h2>



<p class="wp-block-paragraph">それでは本題のコードです。回答スプレッドシートを開いた状態で、メニューの「拡張機能」→「Apps Script」を開き、スクリプトエディタを表示します。</p>



<p class="wp-block-paragraph">デフォルトのコードをすべて消して、次のコードを貼り付けてください。</p>



<pre class="wp-block-code"><code>// ===== 設定 =====
// 登録先カレンダーのID。自分のメインカレンダーなら 'primary' のままでOK。
// 共有カレンダーを使う場合は、カレンダー設定の「カレンダーの統合」にある
// 「カレンダーID」（xxxx@group.calendar.google.com）をコピペする。
const CALENDAR_ID = 'primary';

// フォーム送信時に実行されるメイン関数
function onFormSubmit(e) {
  // e.values は [タイムスタンプ, 氏名, メール, 希望日, 開始時刻, 利用時間, 用件]
  const values = e.values;

  const name      = values[1]; // 氏名
  const email     = values[2]; // メールアドレス
  const dateStr   = values[3]; // 予約希望日（例: 2026/07/01）
  const timeStr   = values[4]; // 開始時刻（例: 14:00）
  const duration  = Number(values[5]); // 利用時間（分）
  const purpose   = values[6]; // 用件

  // 開始日時と終了日時を組み立てる
  const start = buildDateTime(dateStr, timeStr);
  const end   = new Date(start.getTime() + duration * 60 * 1000);

  // カレンダーに予定を作成
  const calendar = CalendarApp.getCalendarById(CALENDAR_ID);
  const title = '【会議室予約】' + name + '様 / ' + purpose;

  calendar.createEvent(title, start, end, {
    description: '予約者: ' + name + 'n連絡先: ' + email + 'n用件: ' + purpose,
    guests: email,            // 予約者をゲストに追加（任意）
    sendInvites: false        // 招待メールを送るかどうか
  });

  Logger.log('予定を登録しました: ' + title);
}

// 「2026/07/01」と「14:00」から Date オブジェクトを作るヘルパー
function buildDateTime(dateStr, timeStr) {
  // 日付の区切りは / でも - でも拾えるようにする
  const d = dateStr.replace(/-/g, '/').split('/'); // [2026, 07, 01]
  const t = timeStr.split(':');                     // [14, 00]
  return new Date(
    Number(d[0]),       // 年
    Number(d[1]) - 1,   // 月（0始まりなので -1）
    Number(d[2]),       // 日
    Number(t[0]),       // 時
    Number(t[1])        // 分
  );
}</code></pre>



<p class="wp-block-paragraph">コードの要点を順番に見ていきます。</p>



<ul class="wp-block-list"><li><strong><code>e.values</code></strong>：フォーム送信時トリガーで自動的に渡される引数 <code>e</code> の中に、その回答1件分のデータが配列で入っています。<code>values[0]</code> がタイムスタンプ、<code>values[1]</code> が1問目の回答……と続きます。フォームの質問順とインデックスが対応している点が重要です。</li><li><strong><code>buildDateTime</code> 関数</strong>：フォームの日付・時刻はテキストとして渡ってくるため、そのままでは予定の開始日時に使えません。年・月・日・時・分に分解してDateオブジェクトを組み立てます。JavaScriptの月は0始まり（1月が0）なので、<code>-1</code> するのを忘れないでください。</li><li><strong><code>createEvent</code></strong>：タイトル・開始日時・終了日時を渡すと予定が作られます。第4引数のオブジェクトで説明文やゲストを追加できます。</li></ul>



<p class="wp-block-paragraph"><code>CalendarApp</code> の詳しい仕様は<a href="https://developers.google.com/apps-script/reference/calendar/calendar-app">Google公式のCalendarApp リファレンス</a>も参考になります。</p>



<h2 class="wp-block-heading"><span id="toc4">フォーム送信時トリガーを設定する</span></h2>



<p class="wp-block-paragraph">コードを書いただけでは自動実行されません。<strong>「フォームが送信されたら <code>onFormSubmit</code> を動かす」というトリガーを設定</strong>して、はじめて自動化が完成します。</p>



<p class="wp-block-paragraph">スクリプトエディタの左メニューにある時計マークのアイコン（トリガー）をクリックし、画面右下の「トリガーを追加」を押します。設定は次の通りです。</p>



<ul class="wp-block-list"><li>実行する関数：<code>onFormSubmit</code></li><li>実行するデプロイ：<code>Head</code></li><li>イベントのソース：<code>スプレッドシートから</code></li><li>イベントの種類：<code>フォーム送信時</code></li></ul>



<p class="wp-block-paragraph">保存しようとすると、初回はGoogleアカウントへのアクセス承認を求められます。「許可」を進めて承認してください（自分のアカウントでカレンダーやメールを操作するための権限です）。</p>



<p class="wp-block-paragraph">トリガーの仕組みや種類をもっと詳しく知りたい方は、<a href="https://mashukabu.com/gas-trigger-automation/">GASのトリガーで集計・通知を自動化する方法</a>で時間主導型トリガーなども含めて解説しています。</p>



<p class="wp-block-paragraph">設定が終わったら、実際にフォームから1件テスト送信してみましょう。カレンダーを開いて、指定した日時に予定が入っていれば成功です。うまく動かないときは、スクリプトエディタの「実行数」（トリガーの実行ログ）を開くと、エラー内容を確認できます。</p>



<h2 class="wp-block-heading"><span id="toc5">予約者へ確認メールを自動送信する</span></h2>



<p class="wp-block-paragraph">予約を受け付けたら、予約者本人に「受け付けました」という確認メールを自動で返すと、<strong>予約システムらしさ</strong>がぐっと増します。<code>onFormSubmit</code> 関数の末尾に、メール送信処理を追加しましょう。</p>



<p class="wp-block-paragraph">先ほどのコードの <code>Logger.log(...)</code> の行の前に、次のコードを追記します。</p>



<pre class="wp-block-code"><code>  // ===== 確認メールを送信 =====
  const subject = '【予約受付完了】会議室のご予約を承りました';
  const body =
    name + ' 様nn' +
    'このたびはご予約いただきありがとうございます。n' +
    '以下の内容で予約を承りました。nn' +
    '----------------------------------------n' +
    '日時: ' + formatJp(start) + ' 〜 ' + formatTime(end) + 'n' +
    '用件: ' + purpose + 'n' +
    '----------------------------------------nn' +
    '※このメールは自動送信です。変更・キャンセルはご返信ください。';

  GmailApp.sendEmail(email, subject, body);</code></pre>



<p class="wp-block-paragraph">そして、日時を読みやすく整形するヘルパー関数を、ファイルの末尾に追加します。</p>



<pre class="wp-block-code"><code>// 「2026年07月01日(火) 14:00」の形式に整形
function formatJp(date) {
  return Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy年MM月dd日(E) HH:mm');
}

// 「15:00」のように時刻だけ整形
function formatTime(date) {
  return Utilities.formatDate(date, 'Asia/Tokyo', 'HH:mm');
}</code></pre>



<p class="wp-block-paragraph"><code>GmailApp.sendEmail(宛先, 件名, 本文)</code> の3つを指定するだけで、自分のGmailアカウントから確認メールが送られます。<code>Utilities.formatDate</code> はDateを好きな書式の文字列に変換する関数で、<code>Asia/Tokyo</code> を指定して日本時間で表示しています。</p>



<p class="wp-block-paragraph">メール送信には1日あたりの上限があります（無料のGmailアカウントで100通／日程度）。予約件数が少ない社内利用なら問題になりませんが、大量送信を想定する場合はこの制限に注意してください。</p>



<p class="wp-block-paragraph">フォームの回答を集計したり別シートに転記したりする処理を組み合わせたい場合は、<a href="https://mashukabu.com/google-form-gas-auto-aggregate/">Googleフォームの回答をGASで自動集計する方法</a>も合わせて読むと、予約データの管理まで一気通貫で自動化できます。</p>



<h2 class="wp-block-heading"><span id="toc6">ダブルブッキングを検知して弾く【応用】</span></h2>



<p class="wp-block-paragraph">会議室や面談枠のように「同じ時間帯に1件しか入れられない」予約では、ダブルブッキングの防止が欠かせません。GASなら、登録前に<strong>その時間帯に既存の予定がないかをチェック</strong>できます。</p>



<p class="wp-block-paragraph"><code>createEvent</code> を呼ぶ直前に、次の判定を入れます。<code>onFormSubmit</code> 関数の <code>const calendar = ...</code> の後ろに追記してください。</p>



<pre class="wp-block-code"><code>  // ===== ダブルブッキング検知 =====
  // start〜end の時間帯に既存の予定があるか調べる
  const existing = calendar.getEvents(start, end);

  if (existing.length &gt; 0) {
    // すでに予定がある → 登録せずにお詫びメールを送る
    const ngSubject = '【ご予約について】ご希望の時間帯は満席です';
    const ngBody =
      name + ' 様nn' +
      'あいにくご希望の日時（' + formatJp(start) + '）はn' +
      'すでに他のご予約が入っております。n' +
      'お手数ですが、別の日時で再度お申し込みください。';
    GmailApp.sendEmail(email, ngSubject, ngBody);
    Logger.log('ダブルブッキングのため登録をスキップ: ' + name);
    return; // ここで処理を終了し、カレンダー登録に進ませない
  }</code></pre>



<p class="wp-block-paragraph"><code>calendar.getEvents(start, end)</code> は、指定した期間に重なる予定を配列で返します。配列の要素が1つでもあれば（<code>length > 0</code>）、その時間帯はすでに埋まっているということです。その場合は登録を行わず、予約者に「満席」のお詫びメールを送って <code>return</code> で処理を終了します。</p>



<p class="wp-block-paragraph">これで、同じ時間帯への二重予約を自動でブロックできます。ただし、フォーム送信がほぼ同時に2件来た場合はすり抜ける可能性がゼロではないので、厳密な排他制御が必要な業務では、登録後にダブりが起きていないか定期チェックする運用も検討してください。</p>



<h2 class="wp-block-heading"><span id="toc7">まとめ：受付業務はGASで自動化できる</span></h2>



<p class="wp-block-paragraph">Googleフォームの予約をGoogleカレンダーに自動登録する仕組みを、基本から応用まで作ってきました。今回のポイントを振り返ります。</p>



<ul class="wp-block-list"><li>GASは<strong>回答先スプレッドシート</strong>に書き、<code>onFormSubmit</code> 関数で回答内容を受け取る</li><li><code>e.values</code> の配列インデックスはフォームの質問順に対応する</li><li>日付・時刻のテキストは <code>buildDateTime</code> でDateに組み立て、<code>createEvent</code> で予定を作成する</li><li><strong>「フォーム送信時」トリガー</strong>を設定してはじめて自動実行される</li><li><code>GmailApp.sendEmail</code> で確認メールを、<code>calendar.getEvents</code> でダブルブッキング検知を追加できる</li></ul>



<p class="wp-block-paragraph">一度組んでしまえば、あとはフォームのURLを共有するだけで、予約の受付からカレンダー登録・確認メールまでが完全に自動で回ります。会議室予約だけでなく、面談予約・設備の貸出申請・イベントの参加受付など、「日時を指定して申し込む」あらゆる業務に応用できます。</p>



<p class="wp-block-paragraph">GASでできる自動化の幅をさらに広げたい方は、<a href="https://mashukabu.com/spreadsheet-gas-getting-started-recipes/">GAS入門｜スプレッドシート自動化のはじめの一歩</a>から基礎を固めていくのがおすすめです。手作業の受付業務を、ぜひこの機会に手放してみてください。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/gas-form-reservation-google-calendar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Googleフォームの作り方入門｜質問設計・回答集計・共有までゼロから解説</title>
		<link>https://mashukabu.com/google-form-how-to-create/</link>
					<comments>https://mashukabu.com/google-form-how-to-create/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Thu, 04 Jun 2026 14:06:46 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[Googleフォーム]]></category>
		<category><![CDATA[アンケート作成]]></category>
		<category><![CDATA[初心者向け]]></category>
		<category><![CDATA[業務効率化]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=7242</guid>

					<description><![CDATA[Googleフォームの作り方を初めての人向けにゼロから解説。アカウント準備から質問設計、配布、スプレッドシート連携での集計まで一通りカバー。質問タイプ早見表と公開前チェックリスト付きで、その日のうちに業務で使えます。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「アンケートを取りたいんだけど、Googleフォームで作ってみてくれる？」</p>



<p class="wp-block-paragraph">こんなふうに頼まれて、画面を開いたものの、どこから手をつけていいか分からない。そんな経験はありませんか。</p>



<p class="wp-block-paragraph">紙のアンケートやExcelの配布で済ませてきた職場では、Googleフォームは「便利らしいけど怖い」存在になりがちです。設定画面の用語が独特だったり、公開URLを送って大丈夫なのか不安だったり、集計が手作業に逆戻りしないか心配だったり。</p>



<p class="wp-block-paragraph">でも安心してください。<strong>Googleフォームの作り方は、コツさえつかめば30分で最初の1本が公開できる</strong>くらいシンプルです。この記事では、初めて触る方が「準備 → 質問作成 → 配布 → 集計」までを一気に終えられるよう、つまずきやすいポイントを丁寧に補足しながら解説します。読み終わるころには、その日のうちに業務で使えるフォームを公開できるはずです。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-3" checked><label class="toc-title" for="toc-checkbox-3">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">Googleフォームとは？無料で使えるアンケート・受付フォーム作成ツール</a><ol><li><a href="#toc2" tabindex="0">Googleフォームでできること</a></li><li><a href="#toc3" tabindex="0">無料で使える理由と利用条件</a></li></ol></li><li><a href="#toc4" tabindex="0">Googleフォームを使う前の準備</a><ol><li><a href="#toc5" tabindex="0">必要なものはGoogleアカウント1つだけ</a></li><li><a href="#toc6" tabindex="0">Googleフォームを開く3つの方法</a></li></ol></li><li><a href="#toc7" tabindex="0">Googleフォームの作り方｜空白フォームから新規作成する</a><ol><li><a href="#toc8" tabindex="0">ステップ1: 新規フォームの作成画面を開く</a></li><li><a href="#toc9" tabindex="0">ステップ2: タイトルと説明文を入力する</a></li><li><a href="#toc10" tabindex="0">ステップ3: 最初の質問を追加する</a></li></ol></li><li><a href="#toc11" tabindex="0">質問の種類と使い分け｜11タイプの早見表つき</a><ol><li><a href="#toc12" tabindex="0">11種類の質問タイプ早見表</a></li><li><a href="#toc13" tabindex="0">単一選択（ラジオボタン）の作り方</a></li><li><a href="#toc14" tabindex="0">複数選択（チェックボックス）の作り方</a></li><li><a href="#toc15" tabindex="0">記述式・段落・日付・時刻・均等目盛り</a></li><li><a href="#toc16" tabindex="0">「必須」設定と回答検証の使いどころ</a></li></ol></li><li><a href="#toc17" tabindex="0">フォームの見た目を整える｜セクション分け・テーマカラー・画像</a><ol><li><a href="#toc18" tabindex="0">セクションを使った長いフォームの分割</a></li><li><a href="#toc19" tabindex="0">テーマカラー・ヘッダー画像の変更</a></li><li><a href="#toc20" tabindex="0">「次へ」ボタンと進捗バーの仕組み</a></li></ol></li><li><a href="#toc21" tabindex="0">公開設定と配布方法｜リンク・メール・QRコード・埋め込み</a><ol><li><a href="#toc22" tabindex="0">公開前に必ず確認する5つのチェックリスト</a></li><li><a href="#toc23" tabindex="0">リンクで共有する（短縮URL・QRコード）</a></li><li><a href="#toc24" tabindex="0">メールで直接送る方法</a></li><li><a href="#toc25" tabindex="0">Webサイトに埋め込む（iframe）</a></li><li><a href="#toc26" tabindex="0">配布方法フローチャート</a></li></ol></li><li><a href="#toc27" tabindex="0">回答の確認と集計｜スプレッドシート連携の使い方</a><ol><li><a href="#toc28" tabindex="0">フォーム内の「回答」タブで概要を見る</a></li><li><a href="#toc29" tabindex="0">回答スプレッドシートを作成する</a></li><li><a href="#toc30" tabindex="0">スプレッドシートで自動集計するコツ</a></li><li><a href="#toc31" tabindex="0">集計テンプレ（COUNTIF・QUERY）</a></li></ol></li><li><a href="#toc32" tabindex="0">フォームの編集と運用｜公開後にやること</a><ol><li><a href="#toc33" tabindex="0">公開後に質問を変更してよいケース・ダメなケース</a></li><li><a href="#toc34" tabindex="0">回答受付を停止・再開する</a></li><li><a href="#toc35" tabindex="0">自動返信メールの送り方（スクリプト不要・拡張機能）</a></li></ol></li><li><a href="#toc36" tabindex="0">よくあるエラー・つまずきどころと対処法</a><ol><li><a href="#toc37" tabindex="0">「アクセス権限がありません」と表示される</a></li><li><a href="#toc38" tabindex="0">回答が反映されない・スプレッドシートに出ない</a></li><li><a href="#toc39" tabindex="0">「ログインが必要」と出てしまう</a></li><li><a href="#toc40" tabindex="0">回答を編集できない・できる設定の切り替え</a></li></ol></li><li><a href="#toc41" tabindex="0">まとめ｜Googleフォームでアンケート業務を楽にしよう</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">Googleフォームとは？無料で使えるアンケート・受付フォーム作成ツール</span></h2>



<p class="wp-block-paragraph">Googleフォームは、Googleが提供する無料のフォーム作成サービスです。Googleアカウントさえあれば誰でも使え、アンケート・申込受付・問い合わせ受付・テスト・社内報告など、さまざまな用途に対応できます。</p>



<p class="wp-block-paragraph">紙やExcelでのアンケートと比べると、次のような違いがあります。</p>



<ul class="wp-block-list"><li>集計を手作業でやらなくていい（自動でグラフ化される）</li><li>配布は1本のURLを送るだけ</li><li>回答はリアルタイムでスプレッドシートに溜まる</li><li>スマホからでも入力できる</li></ul>



<p class="wp-block-paragraph">「PCに詳しい人しか使えないんじゃないの？」と思われがちですが、操作はチャットツールに近く、IT担当でなくても十分に扱えます。</p>



<h3 class="wp-block-heading"><span id="toc2">Googleフォームでできること</span></h3>



<p class="wp-block-paragraph">Googleフォームの代表的な使い道は、次の5つです。</p>



<ol class="wp-block-list"><li><strong>アンケート</strong>: 社内満足度調査、研修後アンケート、イベント感想集め</li><li><strong>申込・受付</strong>: セミナー受付、参加申込、商品予約</li><li><strong>問い合わせ</strong>: 問い合わせ窓口、相談受付</li><li><strong>テスト・クイズ</strong>: 採点付きの理解度テスト</li><li><strong>社内報告</strong>: 日報、業務報告、トラブル報告</li></ol>



<p class="wp-block-paragraph">紙やメールだと集計に半日かかっていた作業が、Googleフォームなら回答が来た瞬間にグラフで確認できます。これだけでも導入する価値は十分です。</p>



<h3 class="wp-block-heading"><span id="toc3">無料で使える理由と利用条件</span></h3>



<p class="wp-block-paragraph">Googleフォームは、個人のGoogleアカウント（Gmailと同じアカウント）でも、会社のGoogle Workspaceアカウントでも、追加料金なしで使えます。回答数の上限もありません。</p>



<p class="wp-block-paragraph">ただし1つだけ覚えておきたいのが、「ファイルのアップロード」型の質問だけは、回答者もGoogleアカウントでログインしている必要がある点です。社外向けのアンケートでファイル提出を求める場合は注意してください。</p>



<p class="wp-block-paragraph">ストレージ（保存容量）はフォーム作成者のGoogleドライブの容量に依存します。個人アカウントの15GB枠で足りるかは、添付ファイルの量で判断しましょう。</p>



<h2 class="wp-block-heading"><span id="toc4">Googleフォームを使う前の準備</span></h2>



<p class="wp-block-paragraph">何かを始める前に、必要なものをそろえましょう。Googleフォームの場合、準備はとてもシンプルです。</p>



<h3 class="wp-block-heading"><span id="toc5">必要なものはGoogleアカウント1つだけ</span></h3>



<p class="wp-block-paragraph">用意するものは次の1つだけです。</p>



<ul class="wp-block-list"><li><strong>Googleアカウント</strong>（個人のGmailアカウント、または会社のGoogle Workspaceアカウント）</li></ul>



<p class="wp-block-paragraph">それ以外のソフトのインストールも、有料プランの契約も不要です。スマホでもPCでも、ブラウザがあれば作成・配布・集計のすべてが完結します。</p>



<p class="wp-block-paragraph">会社で使う場合は、念のためIT担当者に「業務でGoogleフォームを使ってよいか」を確認しておきましょう。組織によっては、個人アカウントでの業務利用を制限している場合があります。</p>



<h3 class="wp-block-heading"><span id="toc6">Googleフォームを開く3つの方法</span></h3>



<p class="wp-block-paragraph">Googleフォームの作成画面を開く方法は、主に3つあります。どれでも結果は同じなので、自分が覚えやすい方法を1つ選んでください。</p>



<p class="wp-block-paragraph"><strong>方法1: 直接URLからアクセスする</strong></p>



<p class="wp-block-paragraph">ブラウザのアドレスバーに <code>forms.google.com</code> と入力します。すでにGoogleアカウントでログイン済みなら、すぐにフォーム作成画面が開きます。</p>



<p class="wp-block-paragraph"><strong>方法2: Googleドライブから作成する</strong></p>



<p class="wp-block-paragraph">Googleドライブ（<code>drive.google.com</code>）を開き、左上の「新規」ボタンをクリックします。「その他」の中に「Googleフォーム」があるので、これを選ぶと新規フォームが開きます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/01_ui_drive-new-menu.png" alt="01 ui drive new menu" /></figure>



<p class="wp-block-paragraph"><strong>方法3: Googleアプリメニューから開く</strong></p>



<p class="wp-block-paragraph">GmailなどのGoogleサービスを開いた状態で、画面右上の点が9つ並んだアイコン（Googleアプリメニュー）をクリックします。下にスクロールすると「フォーム」アイコンがあります。</p>



<p class="wp-block-paragraph">毎日のように使うなら、「方法1」のURLをブックマークしておくと一番速いです。</p>



<h2 class="wp-block-heading"><span id="toc7">Googleフォームの作り方｜空白フォームから新規作成する</span></h2>



<p class="wp-block-paragraph">準備ができたら、実際にフォームを作っていきましょう。ここからは「空白フォーム」を選んで、ゼロから組み立てる手順を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc8">ステップ1: 新規フォームの作成画面を開く</span></h3>



<p class="wp-block-paragraph"><code>forms.google.com</code> を開くと、上部にテンプレートギャラリーが並んでいます。一番左の「空白」をクリックすると、新しいフォームが立ち上がります。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/02_ui_blank-template.png" alt="02 ui blank template" /></figure>



<p class="wp-block-paragraph">最初は次のような画面が表示されます。</p>



<ul class="wp-block-list"><li>上部にフォームのタイトル欄</li><li>その下にフォームの説明文欄</li><li>さらに下に最初の質問欄</li></ul>



<p class="wp-block-paragraph">タイトルは後で変更できるので、まずは空欄のまま進めて大丈夫です。</p>



<h3 class="wp-block-heading"><span id="toc9">ステップ2: タイトルと説明文を入力する</span></h3>



<p class="wp-block-paragraph">画面上部の「無題のフォーム」をクリックして、フォームのタイトルを入力します。回答者が最初に目にする部分なので、何のためのアンケートか一目で分かる名前にしましょう。</p>



<p class="wp-block-paragraph">タイトルの例:</p>



<ul class="wp-block-list"><li>「○○研修 受講後アンケート」</li><li>「忘年会参加可否のご回答（11/30締切）」</li><li>「○○について お問い合わせフォーム」</li></ul>



<p class="wp-block-paragraph">タイトルの下にある「フォームの説明」欄には、回答者へのメッセージを書きます。回答にかかる時間、回答期限、目的、結果の使い道を書いておくと、回答率が上がります。</p>



<h3 class="wp-block-heading"><span id="toc10">ステップ3: 最初の質問を追加する</span></h3>



<p class="wp-block-paragraph">タイトルの下に、最初の質問欄が用意されています。質問文を入力する欄をクリックして、聞きたい内容を入力しましょう。</p>



<p class="wp-block-paragraph">右側の「ラジオボタン」と書かれたプルダウンから、質問の種類を変更できます。質問タイプの選び方は次のセクションで詳しく紹介します。</p>



<p class="wp-block-paragraph">質問を追加するときは、右側のサイドバーにある「+」アイコンをクリックします。これで2問目、3問目とどんどん追加できます。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_ui_question-sidebar.png" alt="03 ui question sidebar" /></figure>



<p class="wp-block-paragraph">ここまでで、フォームの骨格はできあがりです。</p>



<h2 class="wp-block-heading"><span id="toc11">質問の種類と使い分け｜11タイプの早見表つき</span></h2>



<p class="wp-block-paragraph">Googleフォームには、2026年5月時点で11種類の質問タイプがあります。「どれを使えばいいか分からない」と迷う方が多いポイントなので、まずは早見表でざっと全体像をつかみましょう。</p>



<h3 class="wp-block-heading"><span id="toc12">11種類の質問タイプ早見表</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>質問タイプ</th><th>使う場面</th><th>集計のしやすさ</th><th>注意点</th></tr></thead><tbody><tr><td>記述式</td><td>名前・メアドなど短い回答</td><td>△ 自由記述で集計しにくい</td><td>回答検証で形式チェック可能</td></tr><tr><td>段落</td><td>感想・要望など長文</td><td>× テキスト分析が必要</td><td>集計より「読む」用途</td></tr><tr><td>ラジオボタン</td><td>はい/いいえ、5段階評価</td><td>◎ 円グラフで自動集計</td><td>1つしか選べない</td></tr><tr><td>チェックボックス</td><td>「複数選んでください」</td><td>○ 棒グラフで自動集計</td><td>集計時に複数カウントされる</td></tr><tr><td>プルダウン</td><td>選択肢が多いとき</td><td>◎ 円グラフで自動集計</td><td>一覧性が低い</td></tr><tr><td>ファイルのアップロード</td><td>履歴書・写真の提出</td><td>△ ファイル形式で確認</td><td>回答者のGoogleログイン必須</td></tr><tr><td>均等目盛り</td><td>5段階・10段階評価</td><td>◎ 平均値で集計しやすい</td><td>段階数の決定がポイント</td></tr><tr><td>選択式（グリッド）</td><td>複数項目を5段階評価</td><td>○ 行ごとにグラフ化</td><td>質問が長くなりがち</td></tr><tr><td>チェックボックス（グリッド）</td><td>複数項目で複数選択</td><td>○ 集計はやや複雑</td><td>使い所が限られる</td></tr><tr><td>日付</td><td>希望日の入力</td><td>◎ そのまま並べ替え可能</td><td>西暦・和暦の表記注意</td></tr><tr><td>時刻</td><td>希望時間の入力</td><td>◎ そのまま並べ替え可能</td><td>開始時刻だけでは不十分なケースも</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">迷ったときは、「回答が選択肢で済むなら」ラジオボタンかチェックボックス、「自由に書いてもらいたいなら」記述式か段落、と覚えておけば大きく外しません。</p>



<h3 class="wp-block-heading"><span id="toc13">単一選択（ラジオボタン）の作り方</span></h3>



<p class="wp-block-paragraph">最も使うのが「ラジオボタン」です。回答者は選択肢の中から1つだけ選べます。</p>



<ol class="wp-block-list"><li>質問欄に「ご所属を教えてください」など聞きたい内容を入力します</li><li>質問タイプのプルダウンが「ラジオボタン」になっているか確認します</li><li>「選択肢1」「選択肢2」と書かれた欄に、選んでほしい項目を入力します</li><li>必要に応じて「+選択肢を追加」または「+「その他」を追加」をクリックします</li></ol>



<p class="wp-block-paragraph">「その他」を追加しておくと、用意した選択肢に当てはまらない場合に回答者が自由記述で答えられます。アンケートでは保険として入れておくと安心です。</p>



<h3 class="wp-block-heading"><span id="toc14">複数選択（チェックボックス）の作り方</span></h3>



<p class="wp-block-paragraph">「当てはまるものをすべて選んでください」のように複数選んでほしい場合は、チェックボックスを使います。作り方はラジオボタンとほぼ同じで、質問タイプのプルダウンを「チェックボックス」に変えるだけです。</p>



<p class="wp-block-paragraph">集計時は、回答者1人が複数選んでいる前提で見る必要があります。スプレッドシート連携時は、1セルに「選択肢A, 選択肢B」のようにカンマ区切りで入る点だけ覚えておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc15">記述式・段落・日付・時刻・均等目盛り</span></h3>



<p class="wp-block-paragraph">頻出の5タイプは、用途と注意点だけ押さえておけば十分です。</p>



<ul class="wp-block-list"><li><strong>記述式</strong>: 1行の自由記述。名前・メールアドレス・電話番号など</li><li><strong>段落</strong>: 複数行の自由記述。感想・要望・自由記入欄に</li><li><strong>日付</strong>: カレンダーから選んでもらう形式。希望日・誕生日など</li><li><strong>時刻</strong>: 時計から選んでもらう形式。希望時間・参加開始時刻など</li><li><strong>均等目盛り</strong>: 1〜5などの目盛りで評価してもらう形式。満足度調査に最適</li></ul>



<p class="wp-block-paragraph">記述式と段落の違いは、入力欄の高さです。1行で済む内容は記述式、長文を期待するなら段落を選びましょう。</p>



<h3 class="wp-block-heading"><span id="toc16">「必須」設定と回答検証の使いどころ</span></h3>



<p class="wp-block-paragraph">各質問の右下に「必須」というスイッチがあります。これをオンにすると、回答者がその質問を空欄のまま送信できなくなります。</p>



<p class="wp-block-paragraph">名前・メールアドレス・参加可否など、絶対に入力してほしい項目には必ずオンにしましょう。逆に「自由記述の感想欄」などは、必須にしない方が回答率が上がります。</p>



<p class="wp-block-paragraph">質問右下の縦三点メニューから「回答の検証」を選ぶと、メールアドレス形式や数値の範囲指定ができます。たとえば「メールアドレスとして正しい形式か」を自動でチェックしてくれるので、入力ミスを減らせます。</p>



<h2 class="wp-block-heading"><span id="toc17">フォームの見た目を整える｜セクション分け・テーマカラー・画像</span></h2>



<p class="wp-block-paragraph">質問が一通りそろったら、次は見た目を整えましょう。長いフォームほど、デザインの工夫で回答率が変わります。</p>



<h3 class="wp-block-heading"><span id="toc18">セクションを使った長いフォームの分割</span></h3>



<p class="wp-block-paragraph">質問が10問を超える場合は、セクションに分けるのがおすすめです。セクションを分けると、回答者は1ページずつ進めるようになり、心理的な負担が下がります。</p>



<ol class="wp-block-list"><li>質問を区切りたい位置で、右側サイドバーの「セクションを追加」アイコン（角丸長方形が2つ並んだマーク）をクリックします</li><li>セクションのタイトルと説明文を入力します</li><li>必要に応じて、セクションの順序をドラッグで入れ替えます</li></ol>



<p class="wp-block-paragraph">「基本情報」「業務内容」「自由記述」のように、テーマごとに分けると分かりやすくなります。</p>



<h3 class="wp-block-heading"><span id="toc19">テーマカラー・ヘッダー画像の変更</span></h3>



<p class="wp-block-paragraph">画面右上のパレットアイコンをクリックすると、テーマカラーや背景色、フォントを変更できます。会社のブランドカラーに合わせたり、季節感を出したりできるので、カジュアルなフォームでは活用しましょう。</p>



<p class="wp-block-paragraph">ヘッダー画像は、用意されたテンプレート画像から選ぶか、自分でアップロードした画像を使えます。社内のロゴを入れておくと、フィッシング詐欺メールと間違われにくくなります。</p>



<h3 class="wp-block-heading"><span id="toc20">「次へ」ボタンと進捗バーの仕組み</span></h3>



<p class="wp-block-paragraph">セクションを分けると、回答者の画面に「次へ」ボタンが自動で表示されます。さらに設定で「進捗バー」をオンにすると、画面下に「2/4」のような進捗が表示されます。</p>



<p class="wp-block-paragraph">進捗バーの設定は、画面右上の歯車アイコン（設定）→「プレゼンテーション」タブ→「進行状況バーを表示」で切り替えます。長いアンケートでは進捗バーを表示すると、離脱率を下げられます。</p>



<h2 class="wp-block-heading"><span id="toc21">公開設定と配布方法｜リンク・メール・QRコード・埋め込み</span></h2>



<p class="wp-block-paragraph">質問とデザインが整ったら、いよいよ公開です。配布前に公開範囲を必ず確認しましょう。</p>



<h3 class="wp-block-heading"><span id="toc22">公開前に必ず確認する5つのチェックリスト</span></h3>



<p class="wp-block-paragraph">「送信」ボタンを押す前に、次の5項目をチェックしてください。</p>



<ul class="wp-block-list"><li>[ ] <strong>アクセス制限</strong>: 「全員」「組織内のみ」のどちらが適切か確認したか</li><li>[ ] <strong>メールアドレス収集</strong>: 必要な場合のみオン、不要なら必ずオフ</li><li>[ ] <strong>回答のコピー送信</strong>: 回答者にメールで控えを送るか決める</li><li>[ ] <strong>回答の編集許可</strong>: 後から修正させるかどうかを判断</li><li>[ ] <strong>通知設定</strong>: 自分宛に新しい回答の通知メールを受け取るか</li></ul>



<p class="wp-block-paragraph">特に「メールアドレス収集」と「アクセス制限」は、個人情報の取り扱いに直結します。社外向けの匿名アンケートでメアド収集をオンのままにすると、信頼を損ねかねません。</p>



<p class="wp-block-paragraph">これらの設定は、画面右上の歯車アイコン（設定）から変更できます。</p>



<h3 class="wp-block-heading"><span id="toc23">リンクで共有する（短縮URL・QRコード）</span></h3>



<p class="wp-block-paragraph">最も簡単な配布方法は、リンクの共有です。</p>



<ol class="wp-block-list"><li>画面右上の「送信」ボタンをクリックします</li><li>ポップアップ上部の3つのアイコンから「リンク」アイコン（鎖のマーク）を選びます</li><li>表示されたURLをコピーします</li><li>必要なら「URLを短縮」のチェックを入れて短縮版（<code>forms.gle/xxx</code>）を取得します</li></ol>



<p class="wp-block-paragraph">短縮URLはチャット・LINE・社内SNSで送るときに便利です。</p>



<p class="wp-block-paragraph">QRコードを作りたい場合は、Chromeブラウザの右クリックメニュー「このページのQRコードを作成」から生成できます。チラシやポスターに載せて配布するときに役立ちます。</p>



<h3 class="wp-block-heading"><span id="toc24">メールで直接送る方法</span></h3>



<p class="wp-block-paragraph">「送信」ボタンのポップアップで「メール」アイコンを選ぶと、Googleフォームから直接メールで送信できます。</p>



<ul class="wp-block-list"><li>宛先・件名・本文を入力します</li><li>「メールにフォームを含める」にチェックを入れると、メール本文に質問が埋め込まれます</li><li>受信者はメール内で直接回答できる場合があります（メールクライアントによる）</li></ul>



<p class="wp-block-paragraph">社内向けの一斉送信に便利ですが、宛先を「Bcc」で送りたい場合はGmail側で送る方が安全です。</p>



<h3 class="wp-block-heading"><span id="toc25">Webサイトに埋め込む（iframe）</span></h3>



<p class="wp-block-paragraph">社内ポータルや自社サイトにフォームを埋め込みたい場合は、iframeコードを使います。</p>



<ol class="wp-block-list"><li>「送信」ボタンのポップアップで「<>」アイコン（埋め込み）を選びます</li><li>表示されたiframeコードをコピーします</li><li>埋め込みたいページのHTMLに貼り付けます</li></ol>



<p class="wp-block-paragraph">社内SharePointやWordPressサイトに埋め込めば、回答者が外部サイトに飛ばずに入力できます。</p>



<h3 class="wp-block-heading"><span id="toc26">配布方法フローチャート</span></h3>



<p class="wp-block-paragraph">迷ったら、次のフローチャートで判断してください。</p>



<pre class="wp-block-code"><code>回答してほしい人は誰？
├─ 社内（同じ会社のメンバー）
│   └─ メール送信 or 社内ポータルへのiframe埋め込み
├─ 取引先・特定の関係者
│   └─ メール送信（短縮URL）
└─ 不特定多数（一般公開）
    └─ 短縮URL + QRコード（SNS・チラシ・店頭）</code></pre>



<p class="wp-block-paragraph">社内向けは「メール一斉送信」、社外向けは「短縮URL」、一般公開は「QRコード併用」が基本パターンです。</p>



<h2 class="wp-block-heading"><span id="toc27">回答の確認と集計｜スプレッドシート連携の使い方</span></h2>



<p class="wp-block-paragraph">公開した瞬間から、回答が溜まり始めます。集計はGoogleフォーム内とスプレッドシート連携の2通りで確認できます。</p>



<h3 class="wp-block-heading"><span id="toc28">フォーム内の「回答」タブで概要を見る</span></h3>



<p class="wp-block-paragraph">フォーム編集画面の上部にある「回答」タブをクリックすると、回答状況の概要が表示されます。</p>



<ul class="wp-block-list"><li><strong>概要</strong>: 質問ごとに自動でグラフ化（円グラフ・棒グラフ）</li><li><strong>質問</strong>: 質問単位で全回答を確認</li><li><strong>個別</strong>: 回答者1人ずつの回答を表示</li></ul>



<p class="wp-block-paragraph">「概要」タブだけでも、ざっくりした傾向はすぐにつかめます。会議で速報を共有するなら、ここのグラフをそのままスクショして使えます。</p>



<h3 class="wp-block-heading"><span id="toc29">回答スプレッドシートを作成する</span></h3>



<p class="wp-block-paragraph">詳しく分析したいときは、スプレッドシートに連携しましょう。</p>



<ol class="wp-block-list"><li>「回答」タブを開きます</li><li>右上の緑色のスプレッドシートアイコンをクリックします</li><li>「新しいスプレッドシートを作成」を選ぶと、自動で新しいスプレッドシートが作成されます</li></ol>



<p class="wp-block-paragraph">連携後は、回答が来るたびにリアルタイムでスプレッドシートに行が追加されます。タイムスタンプ列も自動で付きます。</p>



<h3 class="wp-block-heading"><span id="toc30">スプレッドシートで自動集計するコツ</span></h3>



<p class="wp-block-paragraph">連携したスプレッドシートで集計する場合、関数を使うと手間がかかりません。</p>



<pre class="wp-block-code"><code>'--- ラジオボタン回答の集計（選択肢ごとの件数） ---
=COUNTIF(B:B, &quot;とても満足&quot;)</code></pre>



<pre class="wp-block-code"><code>'--- 均等目盛りの平均値 ---
=AVERAGE(C2:C100)</code></pre>



<pre class="wp-block-code"><code>'--- 期間指定で件数を絞る（タイムスタンプA列が今月の回答数） ---
=COUNTIFS(A:A, &quot;&gt;=&quot;&amp;DATE(2026,5,1), A:A, &quot;&lt;&quot;&amp;DATE(2026,6,1))</code></pre>



<p class="wp-block-paragraph">集計に使えるスプレッドシート関数の使い方は、<a href="https://mashukabu.com/google-spreadsheet-beginner-guide/">Googleスプレッドシート初心者ガイド</a>や<a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数の使い方</a>の記事で解説しています。</p>



<h3 class="wp-block-heading"><span id="toc31">集計テンプレ（COUNTIF・QUERY）</span></h3>



<p class="wp-block-paragraph">選択肢の集計は <code>COUNTIF</code>、複数条件の絞り込みは <code>COUNTIFS</code> が便利です。データ量が多い場合は <code>QUERY</code> 関数を使うと、SQLのような書き方で集計できます。</p>



<pre class="wp-block-code"><code>'--- QUERYで部署別の回答数を集計 ---
=QUERY(A:F, &quot;select B, count(B) where B is not null group by B label count(B) '回答数'&quot;, 1)</code></pre>



<p class="wp-block-paragraph">最初は <code>COUNTIF</code> だけで十分です。慣れてきたら <code>QUERY</code> にステップアップしてください。</p>



<h2 class="wp-block-heading"><span id="toc32">フォームの編集と運用｜公開後にやること</span></h2>



<p class="wp-block-paragraph">フォームは公開して終わりではありません。公開後の運用も合わせて押さえておきましょう。</p>



<h3 class="wp-block-heading"><span id="toc33">公開後に質問を変更してよいケース・ダメなケース</span></h3>



<p class="wp-block-paragraph">公開後に質問を変更する際は、次のルールを守ってください。</p>



<ul class="wp-block-list"><li><strong>変更してOK</strong>: タイトル・説明文・選択肢の文言修正・回答必須切り替え</li><li><strong>注意が必要</strong>: 質問の追加（古い回答は空欄になる）</li><li><strong>避けたい</strong>: 質問の削除（過去の回答データが消える）・選択肢の意味変更</li></ul>



<p class="wp-block-paragraph">集計の整合性を保つため、質問の本質的な変更は新しいフォームを作って差し替える方が安全です。</p>



<h3 class="wp-block-heading"><span id="toc34">回答受付を停止・再開する</span></h3>



<p class="wp-block-paragraph">締切後は受付を停止しましょう。</p>



<ol class="wp-block-list"><li>「回答」タブを開きます</li><li>右上の「回答を受付中」のスイッチをオフにします</li></ol>



<p class="wp-block-paragraph">オフにすると、回答者には「フォームの受付は終了しました」というメッセージが表示されます。再開したいときは同じスイッチをオンに戻すだけです。</p>



<h3 class="wp-block-heading"><span id="toc35">自動返信メールの送り方（スクリプト不要・拡張機能）</span></h3>



<p class="wp-block-paragraph">回答者にお礼メールを送りたい場合は、2つの方法があります。</p>



<p class="wp-block-paragraph"><strong>方法1: 設定からコピー送信を有効化（最もシンプル）</strong></p>



<p class="wp-block-paragraph">設定の「全般」タブで「回答のコピーを回答者に送信」をオンにします。回答者が送信した内容のコピーが、自分のメールに自動で届きます。</p>



<p class="wp-block-paragraph"><strong>方法2: アドオンを使う（自由なメッセージを送りたい場合）</strong></p>



<p class="wp-block-paragraph">Google Workspace Marketplaceで <code>Email Notifications for Forms</code> などのアドオンを導入すると、定型文の返信メールを自動送信できます。社内利用の場合は、IT担当者にアドオンの導入可否を確認してから入れてください。</p>



<h2 class="wp-block-heading"><span id="toc36">よくあるエラー・つまずきどころと対処法</span></h2>



<p class="wp-block-paragraph">最後に、初心者がよくぶつかる4つのトラブルと、その対処法を紹介します。</p>



<h3 class="wp-block-heading"><span id="toc37">「アクセス権限がありません」と表示される</span></h3>



<p class="wp-block-paragraph">回答者から「フォームを開けない」と連絡があった場合、原因の多くはアクセス制限の設定です。</p>



<p class="wp-block-paragraph">確認すべき点は次の3つです。</p>



<ul class="wp-block-list"><li>アクセス制限が「組織内のみ」になっていないか（社外配布なのに）</li><li>回答者がGoogleアカウントでログインしているか（メアド収集オンの場合）</li><li>フォームの公開状態が「受付中」になっているか</li></ul>



<p class="wp-block-paragraph">社外向けに公開する場合は、設定→「全般」タブで「Googleアカウントでのログインを必須にする」のチェックを必ず外しましょう。</p>



<h3 class="wp-block-heading"><span id="toc38">回答が反映されない・スプレッドシートに出ない</span></h3>



<p class="wp-block-paragraph">スプレッドシートに回答が反映されない場合、リンクが切れているか、別のスプレッドシートに紐づいている可能性があります。</p>



<ol class="wp-block-list"><li>「回答」タブを開きます</li><li>緑色のスプレッドシートアイコン横の縦三点メニューを開きます</li><li>「回答先を選択」で正しいスプレッドシートに紐づけ直します</li></ol>



<p class="wp-block-paragraph">スプレッドシートが間違って削除されていた場合も、ここで作成し直せます。</p>



<h3 class="wp-block-heading"><span id="toc39">「ログインが必要」と出てしまう</span></h3>



<p class="wp-block-paragraph">「Googleアカウントでのログインが必要です」と表示される場合、メールアドレス収集の設定がオンになっています。匿名アンケートで収集する必要がないなら、設定→「全般」タブで「メールアドレスを収集する」をオフにしてください。</p>



<h3 class="wp-block-heading"><span id="toc40">回答を編集できない・できる設定の切り替え</span></h3>



<p class="wp-block-paragraph">回答者から「送信した内容を直したい」と要望があった場合、設定で編集を許可できます。</p>



<p class="wp-block-paragraph">設定→「全般」タブで「送信後に編集を許可する」をオンにすると、回答者が送信完了画面の「回答を編集」リンクから自分の回答を修正できるようになります。ただし、匿名アンケートではこのリンクを保存しておかないと、回答者自身も再アクセスできません。</p>



<h2 class="wp-block-heading"><span id="toc41">まとめ｜Googleフォームでアンケート業務を楽にしよう</span></h2>



<p class="wp-block-paragraph">Googleフォームは、Googleアカウント1つで始められる無料のフォーム作成ツールです。質問タイプを選んで並べるだけでアンケート・申込・問い合わせフォームが作れて、回答はリアルタイムでスプレッドシートに溜まります。</p>



<p class="wp-block-paragraph">この記事のポイントをおさらいしましょう。</p>



<ul class="wp-block-list"><li>準備はGoogleアカウントだけ。<code>forms.google.com</code> から作成画面を開ける</li><li>質問タイプは11種類。早見表で「使う場面」と「集計のしやすさ」を確認すれば迷わない</li><li>公開前は5項目チェックリストで個人情報設定を必ず確認</li><li>配布はリンク・メール・QR・埋め込みの4通り。フローチャートで判断</li><li>集計はフォーム内の概要グラフ＋スプレッドシート連携で自動化</li></ul>



<p class="wp-block-paragraph">最初のフォームができたら、ぜひスプレッドシート連携にも挑戦してみてください。集計が自動化されると、アンケート業務の手間は大きく減ります。</p>



<p class="wp-block-paragraph">集計に使う関数の使い方は、<a href="https://mashukabu.com/google-spreadsheet-beginner-guide/">Googleスプレッドシート初心者ガイド</a>、<a href="https://mashukabu.com/spreadsheet-arrayformula-function/">ARRAYFORMULA関数の使い方</a>、<a href="https://mashukabu.com/spreadsheet-conditional-formatting/">スプレッドシートの条件付き書式</a>の記事も合わせて読むと、フォーム→集計→可視化の流れがスムーズに身につきます。</p>



<p class="wp-block-paragraph">Googleフォームを業務に取り入れて、紙やExcelに頼っていたアンケート作業を一気に楽にしていきましょう。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/google-form-how-to-create/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
