Google Apps ScriptとVBAで業務改善

自動応答機能付きGoogle Form(改

オリジナルのGoogle Formに対していくつかの機能をスクリプトで装備した改造版のGoogle Formです。スクリプトが入っていますので、事前にセットアップが必要です。ファイルはコピーして使用してください。利用に関しては自由です。質問内容は基本的なものしか追加していません。

また、ちょっと手の込んだものにしようとした場合、カスタマイズが必要になります。詳細についてはカスタマイズの項目を参照してください。

使用するファイル

搭載されている機能

このフォームはオリジナルのものに便利ないくつかの機能を追加しています。

  1. 申請者および管理者に対しての自動応答メール送信機能
  2. 自動応答メールはレスポンシブなCSSメールを送信してくれます
  3. 自動応答の規定のメッセージを編集する機能がついています
  4. LINEに通知を送る機能を搭載しています(要Line Notify Token
  5. 自動で入力値で書類を生成し、PDFで添付して送信する機能(要デベロッパーキー
  6. 書類テンプレートや格納先をピックする機能(要デベロッパーキー

セットアップ

このGoogle Formは事前にセットアップが必要です。必ずしも全てのセットアップが必要ではありませんが、セットアップする事で、全部の機能を利用する事が可能になります。セットアップするには、右上のアイコン類の中にある「アドオン」(パズルのアイコン)をクリックし、「共通設定を開く」をクリックして開始してください。右側に設定用のサイドバーが出現します。

図:黄色枠が設定するためのアイコンです

管理者通知アドレス

ここには管理者のメールアドレスを入力します。スクリプトがなんらかの障害で止まった場合のエラーメールや、申請に対しての自動応答のメールを管理者にも送信する際に使用します。基本的には入力するようにしてください。

メールタイトル

メールのタイトル(Subject)を設定します。これは必須の設定です。メールのタイトルですが固定項目ですので、例えば「お問い合わせ内容の自動送信」といった形で、入力します。わかりやすいメールタイトルを設定しましょう。

送信者の名前

ここには送信者の名前を入力します。これは必須の設定です。メール送信者ですが、自動応答ですので、例えば「サイト名 + 自動応答」といったような形で入力します。G Suiteで使用する場合、デフォルトでMailAppにnoReplyオプションが入っていますので、noReplyとなります。この場合この設定はスルーされます。

規定のメッセージ

メール本文の冒頭に記述する申請者に対する固定のメッセージを入力します。改行も可能です。あまり長文を入力すると、Google Apps Scriptのプロパティのサイズ上限(9KBまで)に引っかかってしまうので、短文で入力しましょう。挨拶文や連絡事項などをここには記入するようにします。

LINEアクセストークン

LINE Notifyサービスのアクセストークンを入れます。これを入れる事で、LINEに対して申請があった場合、通知が飛ぶようになります。LINE Notifyのアクセストークンが入っていない場合には、スルーされます。アクセストークンの取得方法は以下の手順です。

  1. LINE Notifyへログインする(自分の設定済みメアドとパスワードにて)
  2. 右上のメニューから、「マイページ」を開く
  3. アクセストークンの発行にある「トークンを発行する」をクリックする
  4. 通知の頭に付く名前を適当に入れて、通知を送るトークルームを選択します。1:1でLINE Notifyから通知を受け取る場合には、自分のLINEアカウントにしか通知が来ません。グループに対して通知したい場合は、予めグループを作っておきましょう。
  5. 取得したアクセストークンを設定に入れてあげます。

プロジェクトを移動

今回の発表直前の2019年4月8日より、Google Apps ScriptからCloud Platform Projectへ直接アクセスが出来なくなりました。これまでにデプロイしてるものについては、これまで通り「リソース」⇒「Google Cloud Platform API ダッシュボード」からアクセスが可能です。

今回の変更はスプレッドシート上で動かすスクリプトやGoogleの拡張サービスを利用しないタイプのスクリプトであれば特に問題はありませんが、「Apps Script API」や「Google Picker API」、「Cloud SQL接続」などGCP上のAPIを利用する場合には以下の手順を踏んで、Google Apps Scriptにプロジェクトを連結する必要があります。これまでは、自動的にGCP上にGoogle Apps Script用のプロジェクトが生成されていたのですが、今後は自分の組織(もしくはGCPプロジェクト)上で作成されたプロジェクトでなければならないということです。詳細はこちらのページを見てください。

連結する手順は以下の通り

  1. Google Cloud Consoleを開く
  2. 左上にある▼をクリックする
  3. ダイアログが出てくるので、新規プロジェクトを作るか?既存のプロジェクトを選択する。この時、G Suiteであれば選択元は「自分のドメイン」を選択する必要があります。
  4. プロジェクト情報パネルから「プロジェクト番号」をコピーする
  5. 対象のGoogle Apps Scriptのスクリプトエディタを開く
  6. 「リソース」⇒「Cloud Platform プロジェクト」を開く
  7. 4.で入手した番号をプロジェクトを変更のテキストボックスに入れて、プロジェクトを設定ボタンをクリックする
  8. 無事に移動が完了すればメッセージが表示されます。
  9. この時、元の自動作成されたプロジェクトはシャットダウンされて消えます。これで設定完了です。

今回のこの変更だと1つ作ったプロジェクトに集約する必要があるので、クォータについてプロジェクト毎のカウントだったので問題なかったものが、集約されることで、クォータに引っ掛かる可能性があります。

図:プロジェクト番号をコピーしておきます

図:プロジェクトを他のプロジェクトに紐付けしました。

図:GCPの拡張サービスを使うには手順が必要になった

デベロッパーキー

書類用テンプレートスプレッドシートや格納先フォルダをピッカーという選択用窓で選ぶようにする場合には、このデベロッパーキーが必要です。デベロッパーキーをセットする場合には以下の手順でキーを取得します。

  1. 今回使用するGoogle Formの右上にある「︙」⇒スクリプトエディタを開く
  2. メニューより「リソース」⇒「Googleの拡張サービス」をクリックする
  3. 窓の下にある「Google APIコンソール」のリンクをクリック
  4. Cloud Consoleのページが開かれます。「APIとサービスの有効化」をクリックします。
  5. 検索窓より「Picker」と入力し、Google Picker APIが出て来るのでクリック。
  6. 有効にするをクリックする
  7. 続いて、認証情報の作成をクリックします。
  8. 作成をすると、デベロッパーキーが出現するのでコピーする
  9. このフォームのデベロッパーキーに値をセットする
  10. スクリプトエディタの画面は閉じる

テンプレ指定

書類の自動生成機能を利用する場合には、セットします。今回使用する書類テンプレートファイルをコピーして、開き、そのURLをそのままセットしてあげます。送信時にこのテンプレートを使用して書類が自動生成され、尚且つPDF化まで行い、申請者と管理者に対してメールでそれを通知します。指定がない場合、書類生成がスルーされます。

URLは最期がeditの所までを入力します。

例:https://docs.google.com/spreadsheets/d/18eM0YEIHpg2KREhdWI2DJyl8lNP-gvcMY84X_jhcQXY/edit

格納フォルダ指定

テンプレ指定で自動生成された書類を格納するフォルダを指定します。適当にフォルダを作成し、そのフォルダのURLを入力してあげます。ここには管理者用のGoogleスプレッドシートのファイルが生成されます。指定がない場合、書類生成がスルーされます。

スクリプトトリガー

フォーム送信時に自動的に発動するトリガーをセットします。この手順は必須項目です。以下の手順になります。

  1. 右上のアイコン類の中にある「アドオン」(パズルのアイコン)をクリックする
  2. 共通設定を開くをクリックする
  3. 「送信トリガー」をクリックする
  4. まだトリガーを設置していない場合は、「色々トリガーを設置しますか?」と聞かれるので、「はい」を選択
  5. 既に設置済みの場合、「既に設置されてる」と出ます。「いいえ」を選択すると、トリガーが削除されます。「はい」の場合は、再設置されます。

ここで注意しなければならないのは、このトリガー設置はこのフォームの管理者だけが行って下さい。他の方もやってしまうと二重にトリガーが設置されてしまいます。フォームは他の人からは他の人のトリガーが見えない仕様なので、トリガー削除もその人でなければ出来ません。気を付けましょう。

また、手動で設置する場合は以下の手順です。

  1. フォームの右上の「︙」をクリックし、「スクリプトエディタ」を開きます。
  2. メニューより、「編集」⇒「現在のプロジェクトのトリガー」を開きます。
  3. トリガーが空なので、リンクをクリックし、実行に「sendforms」、イベントに「フォームから送信時」にてセットします。

図:トリガーが設置されてる様子

回答書き込み先スプレッドシート

回答書き込みはGoogle Formの機能を使っていますので、Form上からそのままスプレッドシートとリンクすると良いです。メイン画面の「回答」タブをクリックし、その中にある「︙」をクリック⇒回答先を選択か自動生成を行わせてリンク完了です。緑色のアイコンをクリックしてもオッケーです。この設定は必須項目です。

カスタマイズ

今回のフォームは4個の基本的な質問しか搭載していません。これに質問を追加する形でカスタマイズを行います。この時、「お名前」と「メールアドレス」はプログラムで重要な役割をしているので、削除したり質問位置を変更すると、スクリプトのほうも修正が必要になってしまいますのでご注意下さい。

カスタマイズする場合は質問項目を追加後に、一度そのまま送信をしてみて、生成されたスプレッドシートの値を元に書類テンプレートファイルに列名を加えたり、テンプレートファイルの書類シートの様式を作り上げると良いでしょう。回答書き込みはGoogle Formの機能を使って書き込んでいるため、書き込みルーチンは存在しません。よって書き込みパターンの変更は、自力でカスタマイズが必要になります(例えば、ID列を追加してみたり、自動生成書類のファイルURLを書き込んでみたり、ステータスを書き込んでみたりは、Formのちからを使わず自力で装備が必要になります。

質問追加だけの場合

  1. 書類テンプレートファイルのdataシート1行目に追加した質問の分だけ項目名を追加してあげます。行は追加してはいけません。
  2. 書類テンプレートファイルの書類シートに於いて、dataシートの値を引っ張る形で自由に書類のディテールを作成して下さい。dataシートには入力された値が入る事になります。

更にカスタマイズをする

更に細かく修正を施したい場合、スクリプトの修正が必要になります。その場合、スクリプトエディタに於いて、「formsend.gs」および「docgene.gs」の2つを修正する事になります。

formsend.gs

ここはフォーム送信時の設定のsendformsに関するルーチンが可能されています。自動的にフォーム入力項目をテーブルの形で生成し、ファイルの生成(docgeneの呼び出し)や、PDF化、メール送信などのメインルーチンが詰まっています。質問追加されるだけならばここを編集する必要性はありません。

メール送信時のオプションやPDF生成ルーチンのオプションなどはカスタマイズしても大丈夫ですが、ソレ以外はあまり編集しないようにしてください。

docgene.gs

ここは、入力値に基づく書類の自動生成を行うルーチンです。テンプレートをコピーし、入力値を反映し、指定のフォルダに格納しています。最期にsendformsに対して、自動生成されたスプレッドシートのIDを返却しています。あまりカスタマイズする余地はありません。ほぼすべてのルーチンが必須のルーチンなので、下手にいじると壊れます。

改訂履歴

2018/4/29 Version 1.3

  • 自動書類生成に於いて、チェックボックスの質問時にテンプレートファイルにデータが正しく書き込まれていなかった現象を修正した。

2018/4/24 Version 1.2

  • Subjectが入力出来ないバグを修正した
  • 自動応答トリガーを設置する為の機能を装備した。
  • 規定のメッセージ登録後にサイドバーがリフレッシュされない現象を修正
  • サイドバーの登録済み項目は赤字で表示

2018/4/15 Version 1.0

  • 最初のバージョン公開。自動返信、自動書類生成、LINE通知、返信メッセージ編集機能付きでスタート
共有してみる:
PAGETOP
Copyright © officeの杜 All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.