GASのTIPSです。
GoogleフォームはGoogleスプレットシートと相性が良く自動的にデータも貯まってきます。ただ、GoogleフォームとGASはそもそも連携できるかすら知らなかったのですが実は連携できるんですね。
さらに、Googleフォームに入力された項目をGoogleドキュメントに転記、かつ指定されたテンプレートフォーマット(再現性はGoogleドキュメントで出来るレベルですが)に合わせて出力出来ます。
これによって例えばGoogleフォームで入力してもらって、それをある程度テンプレート化されたものに自動転記が出来ます。
ぱっと思いつくのは、ITが得意ではない、現場などでわかりやすいUIUXがいる時は、Googleフォームであげてもらう。それらをまとめたり別場所ではドキュメント形式にしたい時は使えそうですね。
GoogleフォームとGASの連携準備
まずGoogleフォームのどこにGAS連携(スクリプトエディタ)があるかですが、以下の画像の通りで、右上のメニューを押して出てきます。こうすると、このGoogleフォームとスクリプトエディタがバインドされます。ちなみに非バインドは、スクリプトエディタを立ち上げてそこでidなどをコード内で指定してあげるやり方ですね。
テンプレートファイルを作り、基本的に項目を置換する
GASを用いて google フォームから google ドキュメントやスプレッドシートを経由してPDFファイルを送付する方法がめちゃくちゃ参考になりました。メール処理やPDF処理はここでは関係ないですが、基本的にドンピシャです。ありがとうございます。
基本的に、Googleフォームの値を格納しておいて、項目に合致するところでテンプレート項目(データ部分)を置換をする感じですね。
細かい説明は上の記事でということで、いくつか試したことをメモしておきます。
Googleドキュメントでレイアウトはそれなりにしか出来ない
テーブルっぽい枠組みも使えるのですが、まあ細かいExcelバリのものやレイアウトにこだわるときついかもしれないなというところでした。これはもうやりたいレベルによりけりでしょう。
Docファイル名をフォーム送信日時にする
小さいテクニックですがこうするとやや頻繁に送られるデータも対応できそうです。ただ秒単位で同時とかだったらどうなるかは未検証です。そもそもそこまでリアルタイム性を求めるのはきついのかなと。
var now_date = new Date(); //ファイル作成日付をファイル名とする
var filename_now_date = Utilities.formatDate(now_date, "JST", "yyyy'年'MM'月'dd'日'HH'時'mm'分'ss'秒'");
var newFile = file.makeCopy(filename_now_date + ".doc");
Dateオブジェクトで、UtilitiesのformatDateメソッドで日付を取得。それでDocファイルを作成するという流れです。
おわりに
このTIPS自体はこれだけで終わりですが、そもそもGoogleフォームからGASという連携を考えたことがなかったりすると、思わぬ発見になりますよね。現場では細かい操作や手間がかかることはしづらい場合、Googleフォームを使うってのはありかもしれませんね。