GoogleフォームでGoogle Apps Scriptを使って回答内容を自動送信する
残しておきたいので久々にブログ書く。
Googleフォームに回答を送信すると、フォームのオーナーが回答のスプレッドシートを公開していない限り何送信したか確認できない。
というわけでスクリプトで回答者に送信するようにしました。
この記事・プログラムはこちらのブログを参考にしました。
function submitForm(e){ /*エラーしたとき用のまるごとtry*/ try{ var itemResponses = e.response.getItemResponses(); var editurl = e.response.getEditResponseUrl(); var message = ''; for(var i = 0; i < itemResponses.length; i++) { var itemResponse = itemResponses[i]; var type = itemResponse.getItem().getType(); var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); /*質問タイトルが「名前」のやつを名前として取得*/ if(question == '名前'){ var username = answer; } /*質問タイトルが「メールアドレス」のやつをメールアドレスとして取得*/ if(question == 'メールアドレス'){ var usermail = answer; } /*質問番号と質問タイトルをくっつける*/ message += (i + 1).toString() + '. ' + question + ': ' + '\n'; /*GRIDタイプなら1行ずつテキスト化*/ if(type == 'GRID'){ var rows = itemResponse.getItem().asGridItem().getRows(); for(var j = 0; j < rows.length; j++){ var rowname = rows[j]; var answercol = answer[j]; message += rowname + ' : ' + answercol + '\n'; } /*それ以外の形式はそのままくっつける*/ }else{ message += answer + '\n'; } } /* 管理者宛メール送信設定 */ var address = '管理者のアドレス'; var title = '[回答を受け取りました]'; var content = '下記の内容で、回答を受信しました。\n\n' + message + '\n\n' + '※このメールはGoogleフォームからの自動送信メールです。'; var options = {from: 'FROMのアドレス', name: '参加フォーム', replyTo: usermail}; GmailApp.sendEmail(address, title, content, options); /*メールアドレスを入力していた場合のみ*/ if(usermail){ /* ユーザー宛メール送信設定 */ var title2 = '[回答を受け付けました]'; var content2 = username + ' さん\n\n' + '回答ありがとうございます。\n' + '下記の内容で、受け付けました。\n' + '内容を変更したい場合は、もう一回フォームを送ってください。\n\n' + message + '\n\n' + '回答を編集する場合このアドレスをつかってください\n' + editurl + '\n' + '\n' + '~~署名~~\n' + '\n\n※このメールはGoogleフォームからの自動送信メールです。'; var options2 = {from: 'FROMのアドレス', name: '参加フォーム'}; GmailApp.sendEmail(usermail, title2, content2, options2); } }catch(err){ var error = err; Logger.log("message:" + error.message + "\nlineNumber:" + error.lineNumber + "\nstack:" + error.stack); } }
使い方
フォームの作成段階で「名前」の回答欄と、「メールアドレス」の回答欄を作ります。
フォーム編集画面の上の方の縦の…(その他)からスクリプトエディタを立ち上げる。
↑のプログラムを突っ込む。
「フォーム送信時」のトリガーを設定する。