2015-01-20

Google Form用自動返信スクリプト

大会レジストレーションフォームとか自動返信を仕込みたいときがあるはず……ということで前から使ってるものをここに貼っておきます。わかる人用。わからない人は聞いてください。

function sendMailFromForm(e){
  var itemResponses = e.response.getItemResponses();
  var message = '';
  var username = '';
  var mail = '';
  for (var i = 0; i < itemResponses.length; i++) {
    var itemResponse = itemResponses[i];
    var question = itemResponse.getItem().getTitle();
    var answer = itemResponse.getResponse();
    if (question == '***名前欄の欄の名前***'){
      username = answer;
    }
    if (question == '***メールアドレス欄の欄の名前***'){
      mail = answer;
    }
    message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n';
  }
  var orgcomaddress = 'xxx@yyy.com';
  var title = 'Automatic Reply: 00th xxx Cup Application Form';
  var content = username + '様\n\nこの度は00th xxx Cupアプリケーションフォームにご回答いただきありがとうございます。以下に内容を確認いたしますので、内容の変更などございましたらメールにてご連絡ください。\n' +
'Thank you for your response to the Application form for 00th xxx Cup. The following is the detail of your response. Should there be any change to it, contact us via email.\n\n'
    + 'ご記入内容 Details of your response\n'
    + message
    + '\n\n'
    + ' --\n'
    + '00th xxx Cup Organizing Committee (xxx@yyy.com)';
  GmailApp.sendEmail(mail, title, content);
  GmailApp.sendEmail(orgcomaddress, 'COPY' + title, content);
}

(↑かなり適当に書いてるのでわかる人は適宜改善して使ってください)

*2016年10月22日追記
やっぱりいろいろな大会で登録したかどうか不透明なケースが生じていたり、あるいは手動で送っていて手間がかかっているように見受けられるので、プログラミングなどをまったくしたことがない人にもわかるように以下解説します。

手順1: 適当にフォームを作ります。名前とメールアドレスの記入欄があればまずは十分なので、そのように作ります。おまけで適当な欄もつけました。ここで名前欄は"Your name"、メールアドレス欄は"Your email"となっています。この二つを一字違わずあとで使うので把握しておいてください。e-mailとかなったり、あるいはスペースが余計に入ったり、とにかくいかなる差異もないようにしてください。
本題とは関係ないですが、このときメールアドレス記入欄については黄色く塗った「…」ボタンから「データの入力規則」を選択し、最初は「数値」となっているところを「テキスト」に変更、そして「次を含む」を「メールアドレス」に変更して、メールアドレスとして成り立つもののみを受け入れる入力規則を付けるようにしましょう


手順2. 次に右上の「…」ボタンから「スクリプトエディタ」を開きます


手順3. コードを編集します。
function myFunction() {

 とすでに入っていると思いますが、すべて消して上に書いたコードを貼り付けてください。そして以下の編集をします
15行目:***名前欄の欄の名前***とあるのを、ここではさっきYour nameとしたので、そのとおり書き換えます。もともとシングルクオーテーションマークに囲まれているので、この引用符を消さないように、またそのほかに余計な引用符をつけないようにしてください。もちろんさっきYour nameじゃなくてほかの名前をつけたなら、それに対応させてください。
18行目:メールアドレスについてもYour emailと書き換えます。まったく同様です。
23行目:自動返信メールが相手方に送られるときに運営側にもコピーがほしいということで、運営側のメールアドレスを入れます。xxx@yyy.comを書き換えてください。
24行目:自動返信メールのタイトルです。大会にあわせて適宜書き換えてください。
25行目以降:本文です。適宜書き換えてください。逆スラッシュとnの二文字で改行になります。また、あくまでシングルクオーテーションの中に書いてください。シングルクオーテーションの外で+記号を使うと文字列の連結になります……この先説明していくとややこしいのであまり踏み込みません。
31行目:本文の末尾です。問い合わせ先のメールアドレスを入れてあるのでこれも編集してください。

以上でコードの準備は完了です。

手順4. 「リソース」メニューから「現在のプロジェクトのトリガー」を開きます。

(上の画像でもともとあったmyFunctionが残っているのはミスです。存在しないのが正しいです。)
するとプロジェクト名を入れるように求められるので、なんでもいいので入れてOKで進みます。

手順5. トリガーが設定されていません……のところをクリックして進み、「フォーム送信時」となっている(最初からなっているはず)ことを確認して「保存」。





手順6. アクセス権を要求してくるので許可




以上で手順は完了です。いまは運営のメールアドレスがないので自分のアドレスを設定してみます。


すると↓登録者へのメールと、運営へのコピーが両方届きました。


内容はどちらも同一で、確認すると記入項目がすべて表示されています。


めでたしめでたし。動作確認はきっちりするようにしてください。

回答をチェックするともちろんきちっと入っています。

スプレッドシートにしてもこのとおり


以上です。大会運営のお役に立てば幸いです。もちろんその他どんな場面でも使えます。