ホーム > ブログ > プログラミングTips > 必要に迫られてGAS使ってみた

必要に迫られてGAS使ってみた

2014.08.08

こんにちはー、銀ねこです。
最近必要に迫られてGoogleAppScript(GAS)なるものをおさわりしました。
Googleドライブの機能はかなり便利で、フォームから自動返信までスクリプトを使って設定できますがネット上に転がってる古い情報を拾うとひどい目に合ったのでメモっておきます。

そもそもGoogleフォームが便利

Googleドライブにフォーム機能があるのご存知ですか?無料でフォームが簡単操作で作れる便利なサービスです。

アンケートなど簡単に作ってタグを埋め込めばサイト上にも設置できます。

わざわざ手間をかけてPHPでプログラミングしなくてもフォームを作成できます。
このフォームだけでもかなり便利なのですがGS(GoogleAppsScript)を使えばさらに高度なことができます。

GASを使えばさらに高機能なフォームが作れる

Googleドライブはこれにスクリプトなるものを追加して機能を拡張できるところです。
ドライブの中に含まれるフォームも例外ではありません。

たとえば、通常のサイトのお問い合わせフォームみたいに

アンケートに答えました→管理人に詳細をメールで通知→アンケートに答えた人にお礼のメール送信

みたいなことがしたい。

これをスクリプトで拡張・実現できるわけです。ステキですね!!!

サイト上に転がっているサンプルに間違いがあり!注意が必要

GoogleAppsScriptで自動返信で検索すると、間違ってたり古いソースのサンプルが転がってます。

本文にnull のメソッド「getLastRow」を呼び出せません。
こんなエラー例をよく見かけます。

今回はもともとあったスクリプトがまさにこの理由で間違っていて修正しなければなりませんでした。
GoogleAppsScript使うの初めてだしな~っと思っていたらタイミングよく今年連載が始まった関する記事がありました!

Googleフォームで自動返信システムをサクッとつくる(2014/4/1掲載)

従来他のサイトに転がっているようにエラーがあった時、通知を返信できるようtry(){}chach(){}で書き直したほうが良いのかもしれませんが、今回はこのまままるっとコピペで使っちゃいました。

  1. function submitForm(e){
  2. var itemResponses = e.response.getItemResponses();
  3. var message = '';
  4. var username = '';
  5. var mail = '';
  6. for (var i = 0; i < itemResponses.length; i++) {
  7. var itemResponse = itemResponses[i];
  8. var question = itemResponse.getItem().getTitle();
  9. var answer = itemResponse.getResponse();
  10. if (question == 'お名前'){
  11. username = answer;
  12. }
  13. if (question == 'メールアドレス'){
  14. mail = answer;
  15. }
  16. message += (i + 1).toString() + '. ' + question + ': ' + answer + '\n';
  17. }
  18. var address = '〇〇@gmail.com';//管理者(自分の)のGmail
  19. var title = 'お問い合わせフォームが送信されました';
  20. var content = '以下の内容でフォームが送信されました。\n\n' + message;
  21. GmailApp.sendEmail(address, title, content);
  22. //フォーム送信者への返信
  23. var title2 = 'お問い合わせありがとうございます';
  24. var content2 = username + '様\n\nこの度はお問い合わせいただきありがとうございます。\n'
  25. + '任意の文章\n'
  26. ;
  27. GmailApp.sendEmail(mail, title2, content2);
  28. }

まとめ

おかげさまでフォーム送信者無事返信できるようになりました。
質問の回答が、管理者だけに届くようになってるのでフォーム送信者にも確認用として送るようにするなど少し書き変えてあげるとさらに良いかもしれません。

 
 

この記事のタグ