Google Apps Script(GAS)を使ってGoogleフォームの受付開始と終了を自動設定してみた

はいたい!初めまして、沖縄オフィス ディレクション部 友利やいびーん。

昨年10月に開設した沖縄オフィスでは東京オフィスと連携しつつ、SNSの運用などさまざまな業務を行っています。
その中でも現在私が取り組んでいるのが、SNSに関する月次レポートの作成、およびマクロやVBA(Microsoftが提供するプログラミング言語)を利用した作業の自動化・効率化です。

Excelやマクロは基本的な内容しか使ったことがなく、VBAなんて聞いたこともない!というレベルからのスタート…。
分からないことだらけでしたが、作ったコードが思い通りに動くことが面白く、試行錯誤を繰り返しながら日々業務に励んでいます。

先日、Webアンケートを実施する案件があり、
その際GoogleフォームというGoogle関連サービスを利用し集計を行いました。
――――――――――――――――――
▼Googleフォームとは
Googleアカウントを持っていれば無料で作成できるフォームのこと。
セミナーの受付やアンケート収集などで利用されることが多いです。
――――――――――――――――――

さて、この時問題になったのが「アンケートの受付開始・終了をどのように行うか」です。
今回のアンケートは特定の日付の深夜12時にフォームの開始・終了を行う必要があったため、タイマーのような機能をGoogleフォーム上で探したのですが見当たらず…。

回答受付に関するボタン一つ押すために、深夜12時にパソコンの前で待機するのは避けたい!
そんな思いから、何とか自動でフォームを動かす方法を探しました。

いろいろと調べてみた結果、Google Apps Scriptという機能を利用することでフォームの回答受付・終了を自動化できるということがわかりました!
――――――――――――――――――
▼Google Apps Script(GAS)とは
javascriptにGoogleのサービスを使えるようにオブジェクトを追加したもののこと。
さまざまなサービスと連携することが可能です。

GASを設定することで具体的には
・Googleフォームの受付開始、終了時刻の自動設定
・Googleスプレッドシートに入力されたデータをチャットに投稿
・メールの自動配信
などが出来るようになります
――――――――――――――――――

今回のブログでは、フォームの受付開始と終了を自動化する方法をご紹介させていただきます。


■フォームの受付開始と終了を自動設定する方法

  • はじめに、コードを作成していきます

img1
あらかじめ作成したフォームで「その他」より「スクリプトエディタ」を選択。
こちらの画面でコードを編集していきます。
img2

function myFunction() {
}

と入力されている内容を、以下の内容へ変更します。

function openForm(){
  var myform = FormApp.openByUrl("URL");
  myform.setAcceptingResponses(true);
}

function closeForm(){
  var myform = FormApp.openByUrl("URL");
  myform.setAcceptingResponses(false);
}

今回、編集が必要になるのは1箇所のみです。
「FormApp.openByUrl」以降にある(“URL”)の内容は、利用したいフォームの編集画面URLを貼り付けてください。
img3

実際の画面だとこのようになります。
img4

なお、コードの以下の部分は、実行する関数の名前になります。

function openForm (){

フォームを開くためのコードとなるため、上部はopenFormとしました。
同様に下部のコードはcloseFormとしています。
(ご自身で管理のしやすい名称に変更いただいて問題ありません)

また、それぞれ末尾の「true/false」はフォームでの回答を受け付けるか否かを操作しています。
編集画面上だと、trueの場合は以下(回答を受け付ける)
img5
falseの場合は締め切る といった動作をします。
img6

これでコードの設定は完了です。保存ボタンより内容を保存してください。

 

  • コードにミスがないかテストしてみましょう!

コードにミスがない場合、
img7
①で関数を選択し、②から実行することでそれぞれのコードを動かして確認することができます。

あらかじめ手動でフォームの回答を受け付けない状態にしておき、closeの関数を選択し実行すると、
コードに問題がなければ回答が締め切られるはずですので、お試しください。

 

  • 最後に、作成したコードを実行させるためのトリガーを設定します

トリガーは、ある条件下において作成したコードを自動で動作させるための機能です。
今回はこの設定を利用し、特定の時間に先ほど作成したコードを実行するトリガーを設定していきます。
img8
上記のアイコン、または「編集」→「現在のプロジェクトのトリガー」よりトリガーの設定画面へ進み、
画面右下「トリガーを追加」をクリック。
(初回実行時には承認を求められますので、アカウントを選択して進めてください)
img9
トリガーを追加画面では、各項目について以下のように設定してください。

  1. 実行する関数を選択
    設定した関数名(例の場合は「open(close)FormAcceptance」)を選択
  2. 実行するデプロイを選択
    「Head」のみが選択可能かと思いますので、選択不要です
  3. イベントのソースを選択
    「時間主導型」を選択
  4. 時間ベースのトリガーのタイプを選択
    「特定の日時」を選択

設定を行うと、以下のような状態になります。
img10
最下部「日時を入力」欄は、日本時間で「2019-01-01 12:00」のように希望の日時を入力。

たとえば、2019年2月1日0時から回答を受け付け、2月8日0時に締め切りたい場合は以下のように2個のトリガーを設定することで、
その時間帯に実際に操作を行わずとも自動でフォームの開閉が可能となります。
左:回答受付を開始  右:回答受付を終了
img11


■まとめ

この設定を利用することで「受付開始・終了時間にパソコン前で待機する」という作業をなくすことができます。
仕事の効率化に関する内容を今後も紹介していきたいと思いますので、どうぞご期待ください!

沖縄オフィスではフロントエンドエンジニアとwebアナリストを募集しています。
webの開発や解析に興味のある方、一緒に働きたい方はご連絡ください!
フロントエンドエンジニア:https://www.wantedly.com/projects/332307
アナリスト:https://www.wantedly.com/projects/332306