Googleフォームの回答を日付ごとに自動でシート分けする方法【GAS活用】




はじめに

Googleフォームで問い合わせや日報を集めていると、
「シートがどんどん長くなって見づらい…」
「日ごとに整理できたら管理が楽なのに」と感じたことはありませんか?

実はGAS(Google Apps Script)を使えば、フォームの回答が送信されるたびに、
その日のシートを自動作成して、そこへ追記する ことができます。

たとえば、2025年10月14日に送信された回答は「2025-10-14」という名前のシートに自動追加。
翌日になれば「2025-10-15」シートが自動で作られる…そんな便利な仕組みです。

この記事では、フォームとスプレッドシートを連携したうえで、
日付ごとに新しいシートを自動で作成して追記するGASスクリプト を紹介します。


やりたいこと

  1. Googleフォームをスプレッドシートに紐づける
  2. フォーム回答を日ごとに自動でシート分けして保存する
  3. 既存シートがある場合は追記、なければ自動作成

準備するもの

ライブラリ

特別なライブラリは不要です。
GASの標準機能である SpreadsheetApp のみでOKです!


Googleフォームとスプレッドシートを紐づける手順

  1. Googleフォームを開く
     フォーム編集画面の上部にある「回答」タブをクリックします。

  2. スプレッドシートをリンクする
     緑色の「スプレッドシート」アイコンをクリックします。

 ▼表示される選択肢
 - 新しいスプレッドシートを作成
 - 既存のスプレッドシートを選択

 どちらでもOKですが、今回は「新しいスプレッドシートを作成」を選びましょう。

  1. 自動的にスプレッドシートが生成される
     これで、フォームに回答が送信されるたびに、スプレッドシートの「フォームの回答1」というシートに自動で追記されます。


コードスクリプト

フォーム送信時に自動で実行され、
回答を「今日の日付のシート」に書き込むスクリプトです。
シートがなければその場で作成します。

function onFormSubmit(e) {
// 回答データを取得
const responses = e.values;

// 今日の日付(例:2025-10-14)
const today = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy-MM-dd');

// 現在のスプレッドシートを取得
const ss = SpreadsheetApp.getActiveSpreadsheet();

// 日付シートを取得(なければ新規作成)
let sheet = ss.getSheetByName(today);
if (!sheet) {
sheet = ss.insertSheet(today);
// フォーム回答のヘッダーをコピー(最初のシートから)
const headerSheet = ss.getSheets()[0];
const header = headerSheet.getRange(1, 1, 1, headerSheet.getLastColumn()).getValues();
sheet.getRange(1, 1, 1, header[0].length).setValues(header);
}

// 回答を追加
sheet.appendRow(responses);
}

実行結果

フォームが送信されるたびに…

  • その日のシート(例:2025-10-14)が自動で作られる

  • 回答内容が1行ずつ追記される

  • 翌日になると、新しい日付シートが自動生成される

つまり「日ごとに整理された日報一覧」ができあがります。


コード解説

  • onFormSubmit(e)
     フォーム送信時に自動で呼ばれる関数。

  • e.values
     フォームの回答が配列で入っている。

  • Utilities.formatDate()
     日付を "yyyy-MM-dd" 形式に整える。

  • insertSheet()
     指定名のシートが存在しない場合、新しく作成。

  • appendRow()
     新しい行を末尾に追加する。


注意点

  • トリガー設定が必要です。
     スクリプトを保存したあと、「トリガー」→「onFormSubmit」を追加しましょう。

  • フォームのヘッダー名が変わるとコピーできない場合があります。
     フォーム側の質問文を変更する際は、ヘッダー確認も忘れずに。

  • 日付形式を「yyyy-MM-dd」に固定すると並びが崩れません。
     スラッシュ区切り(2025/10/14)だと並び順がずれることがあります。


まとめ

フォームで集まった回答を「日別シート」に分けるだけで、
・日報管理がしやすくなる
・その日の内容をすぐ振り返れる
・スプレッドシートが散らからない

というメリットがあります。

GASを少し足すだけで、
「データをためる」から「整理された形で残す」へ。
毎日の作業を少しラクにする第一歩として、ぜひ試してみてください。

コメント

タイトルとURLをコピーしました