【Googleフォームの意外な使い方】Googleフォームでバッチ実行画面を簡単に作る!
GoogleAppsScriptでサーバーの裏側で動くようないわゆるバッチ処理を動作させるには予め起動する時間を設定しておくか、PCのブラウザからスクリプトエディタを立ち上げて、実行ボタンをクリックする必要があります。
予定時刻以外の時間に起動する必要がある場合、たった1つのコマンドで実行できるバッチ処理をわざわざPCを立ち上げて起動するのは少し面倒です。
通常はアンケート、参加申請などの投稿フォームとして利用するGoogleフォームですが、少し工夫するとスマホからバッチ処理を起動する画面として使えることをご存知でしょうか。
そこで本記事では「Googleフォームの意外な使い方」と題して、Googleフォームからバッチ処理を実行する方法と実例を3つほどご紹介します。
本記事を読んでGoogleフォームを業務運用にうまく利用できれば、
下記のようなケースが発生した場合、スマホからいつでも、どこからでも実行できるようになりますので、ぜひご活用ください。
- 予め起動する時刻を設定しておく定期処理を臨時で起動する
- 決まった手順の作業を自動化しておき、好きなタイミングで起動する
Googleフォームをバッチ処理を実行する画面として利用する
具体的な実装方法を説明する前に、ざっくりと全体の概要を説明します。
この仕組みはGoogleフォームで「送信」ボタンを押したあとに、GoogleAppsScriptを起動できることを利用して、GoogleAppsScript内でバッチ処理を起動することで、Googleフォームからバッチ処理を実行しています。
バッチ処理起動時に何らかのパラメータが必要な場合は、Googleフォームの入力項目として用意し、起動する時に入力するようにします。
Goolgeフォームから入力された値をif文で判定することで、フォームから実行するバッチ処理を変えることもできます。
バッチ処理とは画面の操作によるプログラムの実行ではなく、コンピュータでひとまとまりのデータを一括して処理するやり方です。
(参考:Wikipedia)
実装手順
実装する手順は下記の3ステップです。
手順1と手順2でそれぞれ必要なフォームとバッチ処理を作成して、手順3で合わせていく手順となります。
バッチ実行画面とバッチ処理の詳細は仕様によりけりな内容となりますが、大まかに3ステップで作成可能です。
すでに運用しているバッチ処理があるならばそれを画面から実行できるようにすることもできます。
- バッチ実行画面にするGoogleフォームを作成する
- 実行するバッチ処理を作成する
- バッチ実行画面のスクリプトから手順2で作ったバッチ処理を呼び出す
Googleフォームを作成
まずはバッチを実行するためのページをGoogleフォームで作成します。
ただ実行するだけであれば、入力項目は何も設定しなくてよいですが、バッチにパラメータを設定する場合は、入力項目として設定してスクリプトで読み込みます。
GoogleAppsScriptでフォームから入力されたデータを取得する方法についてはGoogleフォームの作り方とScriptでの回答の取得方法で解説していますので参考にしてください。
実行するバッチ処理を作成
次に実行するバッチ処理を作成します。バッチ処理の作成は2種類の方法があります。
- Googleフォームなどのサービスからスクリプトエディタで処理を作成する(コンテナバインド)
- バッチ専用のプロジェクトで作成する(スタンドアロンスクリプト)
1つ目の「スクリプトエディタで処理を作成する」は、Googleフォームのスクリプトエディタを立ち上げて、処理を記述していきます。
直接書き込むので、わかりやすいですですが、Googleフォームに紐づいているので、スクリプトの保存場所が変わりにくくなるため管理が大変になります。
2つ目の「スタンドアロンスクリプト」はGoogleドライブにプロジェクトファイルを直接保存します。
Googleドライブ上にプロジェクトファイルが見えるので、フォルダ分けして管理することができます。
リンク:スタンドアロンスクリプトの作成と実行方法
バッチ処理をGoogleフォームのスクリプトから呼び出す
最後に実行するバッチ処理をGoogleフォームのスクリプトから呼び出します。
下記の例はGoogleフォームからパラメータを入力してmySample()
というバッチ処理を呼び出します。
実はmySample()
という関数はGoogleAppsScriptには存在していない関数で、自作で作ったスタンドアロンスクリプトの関数になります。
単に受け取ったパラメータをconsole.info()
でログに出力しているものです。
【バッチ実行画面】
function myFunction(e) {
// work変数
var parameter;
//回答のオブジェクトを取得
var itemResponses = e.response.getItemResponses();
//回答内容をパラメータとして取得
for (var i = 0; i < itemResponses.length; i++) {
var itemResponse = itemResponses[i];
var question = itemResponse.getItem().getTitle();
var answer = itemResponse.getResponse();
if (question == 'パラメータ') {
parameter = answer;
}
}
// バッチ処理を実行する
SampleBatch.mySample(parameter);
}
【バッチ処理】
function mySample(parameter) {
console.info('処理を実行しました。:' + parameter);
}
mySample()
の中に実行したい処理を書くことになります。
スタンドアロンスクリプトをGoogleフォームのスクリプトとして実行するには「ライブラリ」タブで追加する必要があります。
(スタンドアロンスクリプトでなくてもGoogleフォームのスクリプト内に定義することもできます)
バッチ処理を実行するためにGoogleフォームを利用するメリット
Googleフォームでバッチ処理を実行するための画面を作っておくと、
いざバッチ処理を実行しなければいけない時にサッと実行できるので、とても有益なものかと思います。
Googleフォームで作るとレスポンシブWebデザインを意識しなくてもスマホ/PCの両方で見やすい画面が簡単にできるので、
作る手間も省けます。
質問を設定することで、実行する際のパラメータも簡単に設定できるので、
実行する画面としては問題ないレベルのものが出来上がるのではないかと思います。
- 自分の好きなタイミングでバッチ処理を実行できる
- 簡単にスマホで操作しやすい画面ができる
- パラメータを送信して実行する仕組みも簡単に作成できる
Googleフォームの意外な使い方の例
Googleフォームでバッチ実行画面の使用例を3つほどご紹介しようと思います。詳しいプログラムについてはそれぞれのリンク先で解説しています。
- アップロードしたCSVファイルの内容をGoogleスプレッドシートに転記する
- Googleフォームの回答先スプレッドシートを切り替えるツール
- Googleフォームの集計結果をメールで送付する
アップロードしたCSVファイルの内容をGoogleスプレッドシートに転記する
バッチ処理ではないですが、アップロードされたcsvファイルを読み込んで、Googleスプレッドシートに自動転記するようにします。
csvファイルはGoogleドライブからアップロードすることもできるのですが、
Googleスプレッドシートに転記するには1度開くアクションが必要となります。
数が少なければよいのですが、数が多くなってくると開くアクションだけでも相当な手間となり、時間を取られる作業かと思います。
Googleフォームを使ってアップロードして、同時にスクリプトを実行してGoogleスプレッドシートに転記する作業を自動化してしまうと、ただcsvファイルを開くだけの作業から解放されます。
リンク:csvファイルをGoogleスプレッドシートに転記する
Googleフォームの回答先スプレッドシートを切り替えるツール
Googleフォームは受け付けた回答をGoogleスプレッドシートに連携する機能があります。
設定するにはGoogleフォームの作成画面から行うことができるのですが、
「フォームとスプレッドシートのリンクを解除」→「回答先を選択」から新しいスプレッドシートを設定する必要があります。
この「フォームとスプレッドシートのリンクを解除」→「回答先を選択」から新しいスプレッドシートを設定する作業をGoogleAppsScriptで自動化すると、
Googleフォームから呼び出して、ある投稿フォームの回答先スプレッドシートを切り替えることができるツールとなります。
リンク:Googleフォームの回答先スプレッドシートを切り替えるツール
Googleフォームの集計結果をメールで送付する
Googleフォームで作った投稿フォームの回答内容を集計して、メールの文章にして送付するツールです。
報告用に総回答数、参加人数などサマリデータを送る必要がある場合など、メール本文をScriptで作成して自分に送るようにして、
チェックして問題なければコピー&ペーストで報告用メールを作成するという使い方ができます。
まとめ
Googleフォームの意外な使い方ということで、概要と実例を紹介しました。
アンケートや申し込みフォームといった、意見収集や申し込みだけではなく、内部の運用ツールとしても使えるというのは少し意外だったのではないでしょうか。
運用ツールのために1からWeb画面を作るよりGoogleフォームを使う方が幾分か楽に作れるかと思いますので、いいね!と思っていただけたらお試しください。
現役のシステムエンジニアです。
システム構築の経験を活かして、GoogleWorkspaceを使って業務効率化のための仕組み作りを考えています。