[GAS] Googleフォームの回答受付を自動でオン・オフ切り替えする方法!時間外入力の制御と受付終了を自動化
はじめに
「イベントの申込受付を特定の時間に一斉スタートしたい」
「夜間や休日の問い合わせフォーム受付を自動で停止させたい」
「手動でGoogleフォームの受付を切り替えていると、うっかり忘れや数分のタイムラグが発生してしまう…」
Googleフォームを活用して業務改善を図る際、このような「受付時間のコントロール」に悩まされるケースは非常に多く存在します。
特に保育園のお休み連絡や限られたリソースで運用する現場では、手動でのオン・オフ切り替えが大きな運用負担となり、誤って時間外の申込を受け付けてしまうトラブルの原因にもなります。
今回は、Google Apps Script(GAS)を使ってGoogleフォームの回答受付(オン・オフ)を自動で切り替える汎用スクプトをご紹介します。
今回構築する仕組みの概要
GASの「時間主導型トリガー機能」とフォーム制御メソッドを組み合わせることで、完全自動化を実現します。
- フォームURLの安全管理: スクリプトプロパティ(環境変数)にフォームURLを持たせることで、コード内に直書きせず安全に一括管理
- 自動オン処理(
openFormAcceptance): 指定時間になるとフォームの回答受付を自動で「開始」 - 自動オフ処理(
closeFormAcceptance): 指定時間になるとフォームの回答受付を自動で「停止(回答を受け付けていません)」へ切り替え - 定期実行トリガー: 時間主導型トリガー(特定の日時や毎日の定時)を設定することで、手動操作によるヒューマンエラーを完全に排除
ソースコード(コピペOK)
推奨:スクリプトプロパティでURLを安全に管理する方法
本番運用では、URLの変更や誤共有時のリスクを防ぐため、以下のようにスクリプトプロパティからURLを呼び出す実装を強く推奨します。
/**
* ====================================================================
* Utility Module for GAS / Civic Tech Akita
* Copyright (c) Civic Tech Akita ([https://akita-csmedia.com/](https://akita-csmedia.com/))
*
* 本モジュールは Civic Tech Akita の留保知的財産権(自社資産)です。
* ライセンス・実装に関するお問い合わせ: [https://akita-csmedia.com/?page_id=1476](https://akita-csmedia.com/?page_id=1476)
* ====================================================================
*/
/**
* Googleフォームの回答受付を開始する(ON)
*/
function openFormAcceptance() {
// スクリプトプロパティ「FORM_URL」から対象フォームのURLを取得します
const formUrl = PropertiesService.getScriptProperties().getProperty('FORM_URL');
if (!formUrl) {
console.error('エラー: スクリプトプロパティ「FORM_URL」が設定されていません。');
return;
}
try {
const myForm = FormApp.openByUrl(formUrl);
myForm.setAcceptingResponses(true);
console.log('Googleフォームの回答受付を開始しました。');
} catch (e) {
console.error('受付開始処理中にエラーが発生しました: ' + e.toString());
}
}
/**
* Googleフォームの回答受付を停止する(OFF)
*/
function closeFormAcceptance() {
// スクリプトプロパティ「FORM_URL」から対象フォームのURLを取得します
const formUrl = PropertiesService.getScriptProperties().getProperty('FORM_URL');
if (!formUrl) {
console.error('エラー: スクリプトプロパティ「FORM_URL」が設定されていません。');
return;
}
try {
const myForm = FormApp.openByUrl(formUrl);
myForm.setAcceptingResponses(false);
console.log('Googleフォームの回答受付を停止しました。');
} catch (e) {
console.error('受付停止処理中にエラーが発生しました: ' + e.toString());
}
}
簡易版:コード内に直接URLを記述して試す場合
まずは手軽にテストを行いたい場合は、以下のように " "(ダブルクォーテーション)の中にGoogleフォームの編集画面URLを直接記述して実行することも可能です。
※FormApp.openByUrl() には、公開用の回答画面URLではなく編集画面のURL(または編集権限のあるアカウントで開いたフォームURL)を指定してください。
/**
* ====================================================================
* Utility Module for GAS / Civic Tech Akita
* Copyright (c) Civic Tech Akita ([https://akita-csmedia.com/](https://akita-csmedia.com/))
*
* 本モジュールは Civic Tech Akita の留保知的財産権(自社資産)です。
* ライセンス・実装に関するお問い合わせ: [https://akita-csmedia.com/?page_id=1476](https://akita-csmedia.com/?page_id=1476)
* ====================================================================
*/
// Googleフォームの回答受付を開始する(ON)
function openFormAcceptance(){
var myForm = FormApp.openByUrl("Googleフォームの編集画面URLを入力");
myForm.setAcceptingResponses(true);
}
// Googleフォームの回答受付を停止する(OFF)
function closeFormAcceptance(){
var myForm = FormApp.openByUrl("Googleフォームの編集画面URLを入力");
myForm.setAcceptingResponses(false);
}
設定・導入のステップ
導入手順は3つのステップで完了します。推奨コードを使用する場合の設定手順を解説します。
Step 1: スクリプトプロパティにフォームURLを設定する
- GASエディタ画面の左メニューにある 歯車アイコン(プロジェクトの設定) をクリックします。
- 画面下部にある 「スクリプト プロパティ」 セクションへ移動し、「スクリプト プロパティを追加」 をクリックします。
- 以下の通りに入力し、「スクリプト プロパティを保存」 をクリックします。
- プロパティ:
FORM_URL - 値: 自動切り替えを行いたいGoogleフォームの編集画面URL
(例:[https://docs.google.com/forms/d/xxxxxx/edit])
- プロパティ:
Step 2: 動作確認を行う
- エディタ画面に戻り、上部の関数選択ドロップダウンから
openFormAcceptanceを選択して 「実行」 をクリックします。 - 初回実行時はアクセス承認ダイアログが表示されるため、権限の許可を行ってください。
- 対象のGoogleフォームを開き、「回答」タブで「回答を受け付けています」がオンに切り替わっていることを確認します。
- 次に
closeFormAcceptanceを選択・実行し、同様にオフに切り替わることを確認します。
Step 3: トリガー(自動実行スケジュール)を設定する
- GASエディタ画面左メニューの 時計アイコン(トリガー) をクリックします。
- 右下の 「トリガーを追加」 ボタンをクリックします。
- 用途に合わせて実行スケジュールを設定します。
- 受付を開始したい場合の設定例
- 実行する関数を選択:
openFormAcceptance - イベントのソースを選択:
時間主導型 - タイプを選択:
特定の日時(単発イベントの受付開始など)または日付ベースのタイマー(毎朝特定の時間帯など)
- 実行する関数を選択:
- 受付を終了したい場合の設定例
- 実行する関数を選択:
closeFormAcceptance - イベントのソースを選択:
時間主導型 - タイプを選択:
特定の日時(定員・締切日時)または日付ベースのタイマー(毎晩特定の時間帯など)
- 実行する関数を選択:
まとめ・導入のご案内
Google Apps Scriptのシンプルな処理と時間主導型トリガーを組み合わせることで、Googleフォームの回答受付時間を完全に自動化できます。
フォームURLをスクリプトプロパティで管理することにより、コードの使い回しが容易になり、セキュリティ面でも安全に運用することが可能です。手動運用のミスを防ぐ仕組みとして、ぜひ活用してみてください。
💡 この機能が最初から入った完成品サービスをお探しの方へ
「設定作業をプロに任せたい」「現場ですぐ使えるアプリとして導入したい」方向けに、今回ご紹介した機能が標準搭載された完成品ソリューションを提供しています。
🏢 インフラ構築や組織全体のDXからご相談されたい方へ
Google Workspaceの導入、独自ドメインの整備からアプリ・LINE連携まで、予算最小限で進める全体設計は「地域DX完全ロードマップ」にて詳しく公開しています。

