libro
www.tuyano.com
Google Apps Scriptプログラミング [中級編]

FormAppによるフォームの集計と作成 (5/5)

作成:2014-03-21 17:09
更新:2014-03-21 17:09

■新・フォーム送信時の自動処理

「初心者のためのGoogle Apps Scriptプログラミング入門」の「フォームとウェブアプリケーション」のところで、フォームを送信したときのイベントを使った処理について説明をしました。

このときは、フォームにリンクされたGoogleスプレッドシートにスクリプトを用意しました。が、Googleフォーム側にスクリプトを用意することで、もっと本格的な処理ができるようになっています。

フォームの編集画面から<ツール><スクリプトエディタ...>メニューを選んでスクリプトエディタを起動しましょう。ここで送信されたスクリプトを処理する関数を下のリスト欄のように記述をします。'☆アドレス☆'の部分は自分のメールアドレスに置き換えてください。

記述したら、<リソース><現在のプロジェクトのトリガー>メニューを選びます。そして新しいトリガーを作成し、作成したsendform関数を、フォーム送信時のイベントに設定します。

ここでは、関数で渡される引数からアイテムのオブジェクトを取り出しています。
function sendform(e){
  var items = e.response.getItemResponses();
e.responseFormResponseオブジェクトが取り出せるようになっているのです。そこからgetItemResponsesを呼び出せば、ItemResponseの配列が取り出せますね。後は、今までのところで説明したように、そこから質問のタイトルや回答などを取り出せば、送信された情報を自由にまとめることができます。

フォーム送信時の処理は、フォームにリンクしたGoogleスプレッドを使うより、フォーム自体にスクリプトを用意したほうが圧倒的に便利!といってよいでしょう。


※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

function sendform(e){
  var items = e.response.getItemResponses();
  var msg = '';
  for (var i = 0; i < items.length; i++) {
    var item = items[i];
    var q = item.getItem().getTitle();
    var a = item.getResponse();
    msg += question + ': ' + answer + '\n';
  }
  GmailApp.sendEmail('☆アドレス☆', 'フォーム送信', msg);
}

※関連コンテンツ

「Google Apps Scriptプログラミング [中級編]」に戻る