Googleフォームで入力したデータをスプレッドシートに追加しGmailで知らせるExcel VBAプログラマーのためのGoogle Apps Script入門(終)

Googleが提供するGoogle Apps Script(GAS)のプログラミングで、Google Apps(主にスプレッドシート)を操作する方法を解説していく連載。最終回は、Googleフォームで入力したデータをスプレッドシートに追加しGmailで知らせる方法を紹介する。

» 2017年08月28日 05時00分 公開
[薬師寺国安PROJECT KySS]

 本連載「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フォームを作成

 Googleフォームを新規で作成しよう。本稿では、スプレッドシート上から作成することにする。

 まずは、下記のURLからGoogleドライブにアクセスする。

 「新規」ボタンをクリックして「Googleスプレッドシート」を選択して、新規のスプレドシートを作成する。「無題のスプレッドシート」と書かれている箇所をクリックして編集状態にし、本稿では「フォームの入力」という名前にしておく。

 スプレッドシートのメニューから「挿入」→「フォーム」と選択する(図1)。

図1 「フォーム」を選択する

 すると、図2のような「フォームの入力」画面が表示される。

図2 「フォームの入力」画面が表示された

 図2の「ラジオボタン」と表示されている箇所の「▼」アイコンをクリックして、表示される項目から「記述式」を選択する。すると図2が図3のように変更される。

図3 「記述式」のフォームに変更された

 このフォームで、「氏名」「住所」「電話」の入力フォームを作ってみよう。

 まず、「無題の質問」とある箇所に「氏名」と入力する。その後右に表示されている「●に+」のアイコンをクリックして、質問を追加し、再度「記述式」を選択して、「住所」と入力する、同じ手順で「電話」を追加し、最後に「フォームの入力」と書いてある位置に「住所録の登録」と入力しておく(図4)。

図4 「住所録の登録」の入力フォームを作成した

 このフォームを試すには、図4の右隅上の「目のアイコン」である「プレビュー」をクリックする。すると、図5のようにフォームの入力画面に変わる。

図5 「プレビュー」ボタンから入力画面に変わった

 では、試しにデータを3件ほど入力してみよう。1件入力して「送信」ボタンをクリックすると、「回答を送信しました。」と表示される。続けて入力する場合は、「別の回答を送信」をクリックする(図6)。

図6 データが送信された

 以上の手順を繰り返して3件ほどデータを入力した(図7)。

図7 3件目のデータを入力した。この後「送信」をクリックする

 ブラウザの上に表示されている、「フォームの作成 - スプレッドシート」のタブをクリックすると、スプレッドシートの画面が表示される。スプレッドシートの下に「フォームの回答1」というシートが作成されているので、これを選択する。すると、図8のように、今フォームで入力したデータが自動的に登録されている。その上、タイムスタンプも追加されている。全くコードは書いていないが、このようにフォームから自動的にデータがスプレッドシートに登録されるのだ。

図8 スプレッドシートにフォームからのデータが保存された

 以上で、フォームからのデータ登録はできた。次に、フォームからデータが入力されたら、そのデータがメールで送られるようにしてみよう。

フォームで入力したデータをメールで送るGoogle Apps Script

 ツールメニューから「スクリプトエディタ」を起動する。開いたエディタ画面から「ファイル」→「新規作成」→「スクリプトファイル」と選択して、「入力されたデータをメールで送る」というファイルを作成する。「入力されたデータをメールで送る.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);
}
リスト1 入力されたデータをメールで送るコード

 変数addressには、{送信先メールアドレス}を入力する(2行目)。

 e.namedValuesで「タイムスタンプ」「氏名」「住所」「電話」などフォームから入力されたデータを取得して、各変数に格納しておく(3〜6行目)。

 Bodyを表す「本文」に、取得したデータを、改行を含めて設定する(7〜10行目)。

 MailApp.sendEmailメソッドでメールを受信者に送る(11行目)。

 MailApp.sendEmailの書式は、引数が異なるものが幾つかあるが、今回使ったのは下記の通りだ。

メール(gmail)を送信するMailApp.sendEmailメソッドの書式

MailApp.sendMail({送信先メールアドレス},{サブジェクト},{本文})


フォーム送信時のトリガーを設定する

 スクリプトエディタ画面のメニューから、「リソース」→「現在のプロジェクトのトリガー」と選択する。すると図9の画面が表示される。

図9 「現在のプロジェクトのトリガー」画面が表示される

 「トリガーが設定されていません。いますぐ追加するにはここをクリックしてください。」をクリックする。

 すると、「現在のプロジェクトのトリガー」画面が表示されるので、「実行」に「sendFormMail」を選択、「イベント」に「スプレッドシートから」「フォーム送信時」を選択する(図10)。

図10 現在のプロジェクトのトリガーを設定した

 図9から「保存」をクリックすると「承認が必要です」と表示されるので、「許可を確認」をクリックする。

 すると、図11の画面が表示されるので、「許可」をクリックする。

図11 「入力されたデータをメールで送るが次の許可をリクエストしています:」の画面が表示された

 以上で設定は終わりだ。リスト1の「sendFormMail(e)」のコードを保存しておこう。

実行結果

 スプレッドシートの画面に戻り、メニューの「ファイル」→「開く」と選択して、「フォームの作成」という入力フォームを選択する。右隅上の「目のアイコン(プレビュー)」をクリックして、データの入力を可能にする(図4参照)

 表示されたフォームで2件ほどデータを入力してみよう。

 スプレッドシートを見ると、2件のデータが新規に追加されている(図12)。

図12 2件の新規のデータが追加された

 では、この新規に追加したデータがメールで送られているかを確認してみよう。受信者は筆者宛てにした。

 図13のようにフォームから入力したデータがメールで送られてきた。本稿では、入力したデータ1件ごとにメールは送られるようにしているで、10件のデータを入力すると10件のメールが届く。

 連載第1回でも解説したが、Gmailでは、1日に送れるメールの数は最大で100通までとなっている。よって、リスト1のコードだと100件のデータしか入力してメールで送ることしかできない。

図13 メールで送られてきた、フォームに入力した2件のデータのうちの1件

 メールで送らないのであれば、何件でも入力は可能だ。また、複数の入力データをまとめてメールするようにすれば、最大件数を抑えることもできるだろう。

Google Apps Scriptを使って業務改善を

 以上で、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.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。