Googleフォームの結果を指定したアドレスに送る – ★★☆

Googleフォームの結果を指定したアドレスに送る – ★★☆ Googleフォームの結果を指定したアドレスに送る – ★★☆
Googleフォームの結果を指定したアドレスに送る – ★★☆ Googleフォームの結果を指定したアドレスに送る – ★★☆
ビジネス

便利なGASレシピ集!に戻る場合は以下から

便利なGASレシピ集! – [2019年最新版]

2019年5月22日

はじめに

今回のbzbot(ビジボット)では、Googleが提供しているGoogleFormを使って好きな(任意に指定した)アドレスに対して回答結果の内容をメールに通知する方法を紹介していきます!
GoogleForm自体そういった機能があればいいんですが、現状はないので…

今回はGAS以外の部分に新しくトリガーをセットする部分があるので、要注目です!(笑)
また、この応用としてSlackやチャットワークに対してもメール同様通知を送ることができるのでゆくゆくはそこも声が上がればやってみようと思います。

それでは早速始めていきます

1.回答用のFormを用意する

まずは通知を送る元のGoogleFormを作成します。
GoogleFormの作る方法はDriveから簡単に作成することもできるし、以下URLからも作成することができます。

https://www.google.com/intl/ja_jp/forms/about/

Googleform作成場所 - bzbot(ビジボット)
Googleform作成場所 – bzbot(ビジボット)

今回作成するフォームはテストなので3項目ほどで作成しており、回答の選択方式としては『ラジオボタン』『選択式グリット』『段落』で作ってます。

アンケート作成 - bzbot(ビジボット)
アンケート作成 – bzbot(ビジボット)

作成が終わったら送信情報を受け取ってメールへ通知するコードを記述していきます!

2.コードを追加

スクリプトエディタを開きますが、今までスプレッドシート上から開いてましたがGoogleFormから開きます。
右上の点が3つ連なったメニューを押すと『スクリプト エディタ』と表示されるのでクリックすると従来通り見たことある画面に移動します。

スクリプトエディタ - bzbot(ビジボット)
スクリプトエディタ – bzbot(ビジボット)

今回の完成系コードは以下です!部分的な説明はこのあと実施していきます。

ちなみに上記実行した場合のログデータは以下です。
for文の中にLogger.log()を入れて、iに対してログの表示回数も出してます。
これをやることでデバックしやすくなります!

まずはFormから回答があった場合、このFunctionが実行されることを前提で作っていきます。
引数eにアンケートの情報が詰まった状態で受け渡され、受け取ったデータを変数 itemResponses に入れます。

次にitemResponsesの中身をアンケートの数問わず取り出す必要がある為、for文を使って処理の繰り返しを表現します。
繰り返す回数はitemResponses.lengthで質問の回数分繰り返すことなります。その為質問が増えてもわざわざコードを追加する必要がありません!

for文で配列の0番目、1番目、2番目とデータを取り出して変数 question と変数 answer に値を取り出し、一つずつセットしていきます。
ループの最後に質問と回答を文字列を結合しながら追加したら改行して1番目の処理..2番目の処理..と繰り返されて変数 message に全部のquestionと全部のanswerがセットされます。

最後にメールで送る情報をセットします。送信アドレスは送りたいアドレスを変数 address にセットします。
そのほか件名や変数 content の中にmessageを入れれば綺麗に改行されたデータがメールに表示されます。

\nは文字データの改行ができます。

そして最後のGmailApp.sendEmail関数を呼び出して通知を送って完了です。

3.トリガーを追加

今回トリガーを設定する理由はFormを回答したら実行して欲しいっていう制約(条件)が条件なので、従来通り実行したら結果は帰って来ない為、必ずコードの記載が終わった段階で『トリガー』の追加します。

トリガーは『編集』から『現在のプロジェクトのトリガー』を選択します。

トリガー追加 - bzbot(ビジボット)
トリガー追加 – bzbot(ビジボット)

まずは右下の『トリガーを追加』を選択し、ポップアップウィンドウを表示させます。
ここでは実行する関数や、イベントソースの選択やイベントの種類を指定する必要があります。
それらを終えたら『保存』をクリックします。

実行する関数
submitForm
実行できるデプロイ
Head
イベントのソースフォームから
イベントの種類フォーム送信時
トリガー追加 - bzbot(ビジボット)
トリガー追加 – bzbot(ビジボット)

トリガーを追加すると、それぞれのアプリと連携する為に認証を行う必要があります。

googleのスクープ設定 - bzbot(ビジボット)
googleのスクープ設定 – bzbot(ビジボット)

トリガーの追加が完了すると一覧に表示されます。

プロジェクター bzbot(ビジボット)
プロジェクター bzbot(ビジボット)

4.メール通知完了

トリガーを実行してみると以下メールが届き、しっかりとアンケート内容が表示されているのがわかります。

メールフォーマット - bzbot(ビジボット)
メールフォーマット – bzbot(ビジボット)

今回始めて記事でトリガーを実行させましたが、自動化で毎日何時になったら実行するだったりの処理を私はよくセットして使います!
なかなか詳細部分までは説明できなかったのでまた時間が許せば応用編として再アップ致します!
最後までお付き合いありがとうございました!