1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

社会人なら必須スキル!GASを使って業務改善①Googleフォームからメールを自動返信

Posted at

対象

  • すべての社会人
  • 業務を効率化したい
  • 簡単なアンケートフォームを作成したい

概要

働いていると何かとアンケートや集計を取りたい、、、、そんなことありますよね。
そんな時に手軽に使えるのってGoogleフォームだと思います!

Googleフォームってリンクでも送れるし、webサイトにも埋め込めるしめちゃめちゃ便利ですよね!!!
けどフォームを送信して何も帰ってこなかったら本当に送信できたのかな???
と送信者が不安になります。

ちょちょっとコードを書いて自動化しちゃいましょう!

Google Apps Script(GAS)って??

Google Apps ScriptとはGoogleが開発しているプログラミング言語です。
ブラウザ上でかけるJavaScriptベースでかけるので言語経験がある方には非常に使いやすく簡単な言語になっています!

では早速やっていきましょーう!

適当にフォームを作成する

今回は簡単なアンケートフォームを作成しましょう!!
スクリーンショット 2021-02-07 21.44.02.png
まずはGoogleアカウントからドライブに入っていきましょう!!

新規→Googleフォームをクリック!!

スクリーンショット 2021-02-07 21.47.25.png
自分の好きなように適当に作成しちゃってください♪

作り方はめっちゃ簡単なので直感的にやればわかると思います。
ちなみに選択するボタンはラジオボタンってやつでできます。
いろいろ試して見ましょう!!

Google Apps Scriptを実装していく

フォームができたところで早速コード書いていきましょう!
スクリーンショット 2021-02-07 21.49.23.png

メニューボタンからスクリプトエディタを開いてください!
スクリーンショット 2021-02-07 21.51.07.png

こんな感じになってますね〜
これがGASをかけるエディタです!
もうここにJavaScriptベースで書いていけます。
環境構築せずにブラウザで起動できるので本当に便利ですね!

とりあえずmyFunctionは消して
コードを書き換えましょう!

function sendEmail(e) {
  var itemResponses = e.response.getItemResponses();
  var name = itemResponses[0].getResponse();
  var email = itemResponses[1].getResponse();
  var questionnaire = itemResponses[2].getResponse();


  var to = email;
  var subject = "イベントの申し込みの確認メール";
  var body = "\
  ${name}様\n\n\
  アンケートにご協力していただきありがとうございます。\n\
  以下のアンケート結果で承りました。\n\n\
  アンケート結果: ${questionnaire}".replace("${name}", name).replace("${questionnaire}", questionnaire);
  GmailApp.sendEmail(to, subject, body);
}

説明していきます。
まずfunction sendEmailで関数を定義しています引数の(e)はeventのeの略です。
これでイベントを取得できます。

varは変数ですね。GASはletじゃなくてvarで書くみたいです。

まずitemResponsesでイベントの配列を取得しています。getItemResponses()はGoogleが提供しているメソッドです。
その下は配列から名前、メールアドレス、アンケート結果をそれぞれ取得している感じですね。
フォームの上からインデックス番号で取得できます。

そして一番下でGmailApp.sendEmail(to, subject, body)で関数を実行しています。
引数は左から、宛先、タイトル、本文です。

toは宛先なのでemailを代入
subjectは適当に入力しましょう。
bodyのとこに結構暗号が書いてありますね笑

\nは改行を意味する特殊文字です。
さらにエディタ上で改行する場合は\をもう一つ追加します。

最後にreplaceメソッドを使ってますね。
これはJavaScript使ってる人ならわかりやすいかもしれないですが、簡単にいうと第一引数を第2引数に置き換えるということです。

つまり${name}をnameに置き換える。
nameはitemResponsesの配列の0番目を取得しているので、お名前の記入欄に書いた文字が代入されてます。

これで準備はおっけい!!!

トリガーを実行する

コードを書いただけでは、GASは実行されません。
スクリーンショット 2021-02-07 22.15.00.png
メニューボタンのところからトリガーを選択しましょう!

スクリーンショット 2021-02-07 22.15.50.png
トリガーを追加でこんな風に書いてください。

実行する関数はsendEmailですね。さっき書いたコードのことです。
イベントのソースは今回はGoogleフォームからなのでフォームからを選択
イベントの選択はフォーム送信時を選んでください(これで送信したと同時にトリガーが発動されます)

エラー通知に関してはエラーの通知なので、取りたいタイミングで任意で選んでください!

これで完成でーす!!!

実行

では実行してみましょう!
スクリーンショット 2021-02-07 22.18.25.png
実行はプレビューからできます。

スクリーンショット 2021-02-07 22.19.37.png

メールアドレスは送信したいメールアドレスを選択してください。(試す場合は自分のメールアドレスを)
自分は有村架純が好きなので選択します。

スクリーンショット 2021-02-07 22.21.05.png
お疲れ様でした!!

番外編

フォーム作ったら自分で使っててもつまんないですよね笑
リンクで送るには
スクリーンショット 2021-02-07 22.22.35.png
送信を押してリンクを取得します。

スクリーンショット 2021-02-07 22.23.26.png
こっちを選択するとwebサイトにも埋め込めます!!

index.html
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <iframe
    src="https://docs.google.com/forms/d/e/1FAIpQLSd-TvhoxPdyfcuEzp6c-VbfXbDlHWutI1MxN0eVDkh6Pfdq2w/viewform?embedded=true"
    width="640" height="824" frameborder="0" marginheight="0" marginwidth="0">読み込んでいます…</iframe>
</body>
</html>

スクリーンショット 2021-02-07 22.25.37.png

お疲れ様でした!!!!

1
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?