見出し画像

#10 Google フォームの回答に期限を設定するには?

Google フォームを使って、イベントの参加申し込みフォームを作成しようと考えたものの、申込期限になったら自動的に受け付けなくなってくれればいいのに、と思いました。

設定の流れ

アドオンなどを追加することで実現できることは知っていたので、検索してみたところ、以下のサイトを見つけました。このサイトで紹介されている方法を応用すれば、アドオンを追加することなく、プログラムを変更することなく、トリガーで期限(日時)を設定するだけでOKです。

上記のサイトでは、プログラム(スクリプト)を一部変更しなければならないように説明されていますが、以降で説明している方法ではプログラムはそのままで構いません。期限として、トリガーを設定するだけで大丈夫です。

手順1 フォームを開く

それでは、手順を説明します。期限を設定する Google フォームは、既に作成されているものでも構いません。

  • サンプルとなる「Google フォーム」をコピーして提供できるようにしたかったのですが、元ファイルをコピーできるように共有しようとすると「閲覧者」が指定できずに、「編集者」の権限が与えられてしまいます。
    トラブルの発生を防ぐために、スクリプトのみの公開とさせていただきます。

手順2 スクリプトの設定

期限を設定したい Google フォームを開き、右上の「その他」ボタンから、「スクリプトエディタ」を選択します。

メニューから「スクリプトエディタ」

スクリプトとして、以下のように 3行分のスクリプトを貼り付けます。
スクリプトエディタをはじめて開いたときには、既に関数のひな型が入力されていますが、それを以下の 3行と置き換えます。

function closeFormAcceptance() {
	FormApp.getActiveForm().setAcceptingResponses( false );
}
貼り付けるスクリプト

冒頭で紹介した参考にしたサイトでは、Google フォームのファイル ID を指定しなければならなかったのですが、コンテナにバインドされたスクリプト内であれば使用できる関数を使用することで、個別に指定しなくてもよくなったので、単純にコピペするだけで大丈夫です。

  • スクリプトの中身は、closeFormAcceptance という名前の関数を宣言し、setAcceptingResponses( ) メソッドによって、このフォームが回答を受け付けない(false)ように設定する関数を記述しているだけです。

  • 実行されたフォームのファイル ID は、コンテナにバインドされたスクリプトであることを利用して、FormApp.getActiveForm() によって取得しています。既存のフォームで利用するときも、前述のように右上の「その他」ボタンから、「スクリプトエディタ」で開いたところにコピペで大丈夫です。

手順3 トリガーの設定

3行のスクリプトを貼り付けたら、画面左側の「トリガー」を選択して、期限となる日時を設定します。

トリガーを設定

トリガーの設定画面で、右下の「トリガーを追加」ボタンを押し、以下のように設定します。左下の「日時を入力(GMT+9:00)」に期限を設定してください。

トリガーの条件を設定

上記のトリガーを設定して「保存」ボタンを押すと、以下の記事で説明しているような確認画面が表示されます。GAS のプログラムを実行するために必要な確認です。


あとは、トリガーで設定された日時になるとプログラムが実行されて、以下のように回答が受け付けられなくなります。

回答を受け付けなくなった状態

まとめ

アドオンを使っても同様の期限が設定できるとは思いますが、標準として用意されている機能だけでも、Google フォームの回答期限を設定できます。

この内容が役に立てば、幸いです。


この記事が気に入ったらサポートをしてみませんか?