Google Forms GASを利用した予約リンク

  • TAG

    GAS
  • UPDATE

    2024/08/02

1.はじめに

1-1.GASGoogle Apps Script)に関して

Google Apps ScriptはGoogleが提供しているアプリケーション開発プラットフォームで、Googleアカウントがあれば誰でも始めることができます。

Apps Script – Google Apps Script

Googleサーバに開発環境が整っているため、簡単に開始でき、スクリプトを記述し、高度な処理を実行することも可能です。

スクリプトはJavaScriptベースなのでなじみやすく、GmailGoogleカレンダー、Google FormsGoogle Sheetsなど様々なGoogleのアプリケーションと簡単に連携できることも特徴です。

また豊富なAPIでとの連携もでき拡張性も高いことも特徴として挙げられます。

弊社のコラムでもいくつか紹介しています。

 

GASの導入事例をいくつか紹介したコラム

GASの活用方法まとめ | BTC RPA (bigtreetc.com)

Google Apps Script(GAS)の導入事例。ファイル分割で作業効率化! | BTC RPA (bigtreetc.com)

GAS×RPAやGAS×LINEなど別サービスとの連携も紹介したコラム

Automation AnywhereからGoogleAppsScript(GAS)を実行してみた | BTC RPA (bigtreetc.com)

Google Apps Script(GAS)で最新コラムを通知するLINE Botを作ってみた | BTC RPA (bigtreetc.com)

 

1-2.GASを活用した予約管理システムの簡単導入について

予約管理システムについて

予約数の向上、予約対応の負担軽減、集客・販売の促進etcと様々な場面で有用な予約管理システムです。

しかし独自のシステム開発やオンラインツールを導入する必要があり、技術面、コスト面での導入障壁は高いのが課題です。

そこでGASを使えば、簡単に独自で予約管理システムを作成することができます。

 

GAS×Google Forms×Google Sheetsで予約管理を簡単導入

Google Formsは誰でも簡単にフォームを作成し公開することができ、プログラミングも必要なく複数の質問形式をドラッグアンドドロップで構築することができるノーコードアプリです。

Google フォーム: ビジネス向けのオンライン フォーム作成ツール | Google Workspace

またGoogle Formsを公開し回答された項目をGoogle Sheetsに自動転記することもできます。

今回はGoogle Formsで取得した情報をGoogle Sheetsで管理し、Google Sheetsの情報をGoogle Formsで読み取って質問内容をリアルタイムで更新するシステムを紹介していきます。

1-3.GASを活用した予約管理システムの概要

システムの概要図は以下の通りです。

Formでは空いている予約日をリストとして表示し、回答者が希望の予約日を選択して回答します。

SheetにはFromの回答情報と予約日の一覧を保存します。

GASによってFormで回答した情報をGoogle Sheetsに転記します。またFormsを開いた際にGoogle Sheetsに記載されている情報からまだ埋まっていない予約日を取得し、Formの空いている予約リストを更新します。

 

 

一部プログラミングが必要ですが、動的で扱いやすいFormを作成し、予約を管理することができます。

 

 

2.予約管理システムの作成

2-1.Google Formsの予約項目を設定

希望日時欄をラジオボタン項目で作成し、当該項目を予約が埋まり次第、動的になる項目にしていきます。

他予約に必要な氏名・連絡先を記述します。

 

 

2-2.予約情報を集約するスプレッドシートを設定

スプレッドシートにFormの回答が紐づくようにリンクの設定を行います。

「フォームの回答」シートは回答されると行数がずれてしまうため、「work」シートに関数を用いて、転記しています。

 

 

「予約情報」シートには「work」シートのKeyに紐づく日付を参照しており、予約枠のカウントを行っています。

予約枠(C列)の値が申込数(D列)より大きくなった場合、E列の関数にて予約可否を不可に変更します。

 

 

2-3.GAS処理を作成

手順

詳細

スプレッドシートの情報取得

スプレッドシートより予約可の日付を格納

予約可の日付をFormに挿入

 

function myFunction() {

  //1.スプレッドシートの情報取得

  var ss = SpreadsheetApp.openById(_SSID).getSheetByName(_SS_SHEETNAME);

  var DateDatas = ss.getRange("A2:E30").getValues();




  //2.スプレッドシートより予約可の日付を格納

  var reserveList = [];

  for(i=0;i<DateDatas.length;i++){

    if(DateDatas[i][4] == "可"){

      reserveList.push(DateDatas[i][0]);

    }

  }

  //3.予約可の日付をFormに挿入

  var FormList =FormApp.openById(_FORMID).getItems();

  for(i=0;i<FormList.length;i++){

    if(FormList[i].getTitle().match("希望日時を選択してください")){

      FormList[i].asMultipleChoiceItem().setChoiceValues(reserveList);

    }

  }

}

 

次から、詳細について説明していきます。

 

スプレッドシート上の値を取得

var DateDatas = ss.getRange("A2:E30").getValues();

「予約管理」シートの情報をDateDatas変数に格納します。

予約可能な日付をForm登録項目に格納

    if(DateDatas[i][4] == "可"){

      reserveList.push(DateDatas[i][0]);

    }

ループ処理内で、”可”となっている日付をreserveList[]に格納します。

Form項目を更新

    if(FormList[i].getTitle().match("希望日時を選択してください")){

      FormList[i].asMultipleChoiceItem().setChoiceValues(reserveList);

    }

FormList[i].getTitle()で質問項目のタイトル名を取得できるので、日時選択で更新するように処理分岐を入れます。

FormList[i].asMultipleChoiceItem().setChoiceValuesで変数に格納されている項目をForm上でアップデートできます。

変数が空の場合、エラーとなってしまうので、注意しましょう。

 

2-4.実行結果

新たに8/3(土)10:00、8/3(土)14:00を追加し、GAS処理でForm更新できるか実行してみます。

 

 

 

実行完了!

Formを確認すると新たに枠が追加されたことが確認できます。

 

 

3.おわりに

 

今回はGoogle製品を連携して簡単にアプリケーションを作成する方法を紹介しました。

他にもGmailGoogleカレンダー、Google Cloudとの連携するためのサービスをあるので拡張性はかなり高いです。

BTCではGoogle製品を利用した開発実績があるため、気になる方は是非お問い合わせください。

 

最新情報をお届けします!

RPAに関する最新コラムやイベント情報をメールで配信中です。
RPA領域でお仕事されている方に役立つナレッジになりますので、ぜび登録してください!

最新情報を受け取る方はこちら

もっと知りたい方はこちら


ページトップ