Googleが提供するGoogle Apps Script(GAS)のプログラミングで、Google Apps(主にスプレッドシート)を操作する方法を解説していく連載。最終回は、Googleフォームで入力したデータをスプレッドシートに追加しGmailで知らせる方法を紹介する。
本連載「Excel VBAプログラマーのためのGoogle Apps Script入門」では、Googleが提供する「Google Apps Script」(GAS)のプログラミングで、「Google Apps」を操作する方法を「Google Sheets」(スプレッドシート)を中心に解説している。
最終回となる今回は、「フォーム」を使用する。フォームといっても、Excel VBAにあるような、ButtonやListBoxやTextBoxを配置して、動作するフォームとは全く異なる。「Googleフォーム」は非常に簡潔で、項目名さえ入力すれば、入力ボックスや、スプレッドシートへのデータの登録は、全て自動で行ってくれる。またフォームに入力したデータはメール(Gmail)で送ることも可能だ。
Excel VBAでメールを送ることももちろん可能だが、SMTPサーバ名を指定したり、ログインIDを指定したり、パスワードを指定したり、と前段階が結構面倒だ。しかしGoogle Apps Scriptではそのような、前段階は不要でメールの送信ができる。
Googleフォームを新規で作成しよう。本稿では、スプレッドシート上から作成することにする。
まずは、下記のURLからGoogleドライブにアクセスする。
「新規」ボタンをクリックして「Googleスプレッドシート」を選択して、新規のスプレドシートを作成する。「無題のスプレッドシート」と書かれている箇所をクリックして編集状態にし、本稿では「フォームの入力」という名前にしておく。
スプレッドシートのメニューから「挿入」→「フォーム」と選択する(図1)。
すると、図2のような「フォームの入力」画面が表示される。
図2の「ラジオボタン」と表示されている箇所の「▼」アイコンをクリックして、表示される項目から「記述式」を選択する。すると図2が図3のように変更される。
このフォームで、「氏名」「住所」「電話」の入力フォームを作ってみよう。
まず、「無題の質問」とある箇所に「氏名」と入力する。その後右に表示されている「●に+」のアイコンをクリックして、質問を追加し、再度「記述式」を選択して、「住所」と入力する、同じ手順で「電話」を追加し、最後に「フォームの入力」と書いてある位置に「住所録の登録」と入力しておく(図4)。
このフォームを試すには、図4の右隅上の「目のアイコン」である「プレビュー」をクリックする。すると、図5のようにフォームの入力画面に変わる。
では、試しにデータを3件ほど入力してみよう。1件入力して「送信」ボタンをクリックすると、「回答を送信しました。」と表示される。続けて入力する場合は、「別の回答を送信」をクリックする(図6)。
以上の手順を繰り返して3件ほどデータを入力した(図7)。
ブラウザの上に表示されている、「フォームの作成 - スプレッドシート」のタブをクリックすると、スプレッドシートの画面が表示される。スプレッドシートの下に「フォームの回答1」というシートが作成されているので、これを選択する。すると、図8のように、今フォームで入力したデータが自動的に登録されている。その上、タイムスタンプも追加されている。全くコードは書いていないが、このようにフォームから自動的にデータがスプレッドシートに登録されるのだ。
以上で、フォームからのデータ登録はできた。次に、フォームからデータが入力されたら、そのデータがメールで送られるようにしてみよう。
ツールメニューから「スクリプトエディタ」を起動する。開いたエディタ画面から「ファイル」→「新規作成」→「スクリプトファイル」と選択して、「入力されたデータをメールで送る」というファイルを作成する。「入力されたデータをメールで送る.gs」内に、リスト1のコードを記述する。
function sendFormMail(e){ var address="{送信先メールアドレス}"; var timeStamp=e.namedValues["タイムスタンプ"]; var name=e.namedValues["氏名"]; var personAddress=e.namedValues["住所"]; var tel=e.namedValues["電話"]; var body="時刻:"+timeStamp+"\n"; body+="氏名:"+name+"\n"; body+="住所:"+personAddress+"\n"; body+="電話:"+tel+"\n"; MailApp.sendEmail(address,"個人情報送信",body); }
変数addressには、{送信先メールアドレス}を入力する(2行目)。
e.namedValuesで「タイムスタンプ」「氏名」「住所」「電話」などフォームから入力されたデータを取得して、各変数に格納しておく(3〜6行目)。
Bodyを表す「本文」に、取得したデータを、改行を含めて設定する(7〜10行目)。
MailApp.sendEmailメソッドでメールを受信者に送る(11行目)。
MailApp.sendEmailの書式は、引数が異なるものが幾つかあるが、今回使ったのは下記の通りだ。
MailApp.sendMail({送信先メールアドレス},{サブジェクト},{本文})
スクリプトエディタ画面のメニューから、「リソース」→「現在のプロジェクトのトリガー」と選択する。すると図9の画面が表示される。
「トリガーが設定されていません。いますぐ追加するにはここをクリックしてください。」をクリックする。
すると、「現在のプロジェクトのトリガー」画面が表示されるので、「実行」に「sendFormMail」を選択、「イベント」に「スプレッドシートから」「フォーム送信時」を選択する(図10)。
図9から「保存」をクリックすると「承認が必要です」と表示されるので、「許可を確認」をクリックする。
すると、図11の画面が表示されるので、「許可」をクリックする。
以上で設定は終わりだ。リスト1の「sendFormMail(e)」のコードを保存しておこう。
スプレッドシートの画面に戻り、メニューの「ファイル」→「開く」と選択して、「フォームの作成」という入力フォームを選択する。右隅上の「目のアイコン(プレビュー)」をクリックして、データの入力を可能にする(図4参照)
表示されたフォームで2件ほどデータを入力してみよう。
スプレッドシートを見ると、2件のデータが新規に追加されている(図12)。
では、この新規に追加したデータがメールで送られているかを確認してみよう。受信者は筆者宛てにした。
図13のようにフォームから入力したデータがメールで送られてきた。本稿では、入力したデータ1件ごとにメールは送られるようにしているで、10件のデータを入力すると10件のメールが届く。
連載第1回でも解説したが、Gmailでは、1日に送れるメールの数は最大で100通までとなっている。よって、リスト1のコードだと100件のデータしか入力してメールで送ることしかできない。
メールで送らないのであれば、何件でも入力は可能だ。また、複数の入力データをまとめてメールするようにすれば、最大件数を抑えることもできるだろう。
以上で、10回にわたった、Google Apps Scriptの入門編は最終回だ。
使ってみていかがだっただろうか。クライアント処理のExcel VBAとは基本的には比較はできないとは思うが、Google Apps Scriptも多少不具合や制限はあるものの、結構扱いやすかったのではないだろうか。
今回紹介したサンプルを基に、ぜひ、皆さんの職場でも、Google Apps Scriptを使って業務改善を行ってみたらいかがだろうか。インストールの手間もないし、無料だし、思ったほど難しくはないし、現場で使用するにはもってこいの環境だと思う。ぜひトライしていただきたい。
PROJECT KySS 薬師寺 国安(やくしじ くにやす)
1950年生まれ。フリーVBプログラマー。高級婦人服メーカーの事務職に在職中、趣味でVBやActiveXに取り組み、記事を執筆。2003年よりフリー。.NETやRIAに関する執筆多数。Windowsストアアプリも多数公開中(約270本)。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
PROJECT KySSは、1997年に薬師寺聖と結成したコラボレーション・ユニット
Copyright © ITmedia, Inc. All Rights Reserved.