[nnn.ed.jp] Google フォームで送信後にオリジナルの自動返信メールを送信する方法

# 概要
こんにちは。５期生、江坂キャンパス・ナレッジベース制作の横内です。

N高等学校では、Google フォームへのアドオン追加が制限されているため、追加機能で、自動返信を追加することは困難になっています。が、Google フォームの回答記録用に利用できるGoogle スプレッドシートのスプリクトエディタにコマンドを入力することで、自動返信メールを送信することができます。その方法についてご説明してまいります。最後までお付き合いを。

# シーン
- 同好会参加受付メールの送信（自分でメッセージをオリジナルにして送信）<br>
- イベント企画・運営の参加受付メール（注意事項などを記入して送信）<br>
- その他、フォーム送信後、オリジナル文章を送信したいとき

# 設定内容
-  Google スプレッドシート - スプリクトエディタ
-  Gmail メールフィルタ

# 注意事項
この設定を行うあたり、以下の点にはご注意ください。

- 設定をどうするのかも自由です。設定も任意です。
- 他人を傷つける恐れがあるものはやめましょう。
- 誰が見ても、大丈夫な文章にしましょう。

# Google フォーム＆スプレッドシートの設定方法
１． Google フォームを作成し、フォームを作成します。
<b>※ 名前収集の項目は『名前』にしてください！メールアドレスの自動収集もつけてください！</b>
<img width="1440" alt="スクリーンショット 2020-06-22 10.43.42.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/b40d0598-c04a-3d3b-f8e0-d504a8a52e9c.png">
２．<b>“回答”</b>をクリック
<img width="794" alt="スクリーンショット 2020-06-22 10.45.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/711bf17f-a922-a314-3369-c3de7f486bc3.png">
３． <b>“スプレッドシート”</b>をクリック
<img width="207" alt="スクリーンショット 2020-06-22 10.46.12.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/f88efaaa-dc0a-b0d4-c636-fe04810a311b.png">
４． <b>「回答先の選択」ウィンドウで“作成”を選択</b>
※通常であれば、『新しいスプレッドシートを作成』でOK。
<img width="567" alt="スクリーンショット 2020-06-22 10.47.37.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/24d58191-bec0-11e0-2817-37f079a90eea.png">
５． 別タブでスプレッドシートが開きます。
<img width="1410" alt="スクリーンショット 2020-06-22 11.27.31.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/7d15bd76-e127-36ce-8d9d-95e1afcd53ad.png">
６． <b>ツール ＞ “スクリプトエディタ” </b>をクリック。
<img width="363" alt="スクリーンショット 2020-06-22 11.28.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/26aec545-e260-2e00-ccd9-88ea506107e6.png">

# スクリプトエディタでの操作

１． 別タブでスクリプトエディタが開きます。
<img width="1440" alt="スクリーンショット 2020-06-22 11.29.48.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/10521209-9f16-6e09-e24d-29adc9994468.png">
８． 以下のコードを<b>修正の上</b>、コピペで貼る。

```ruby:Script_Editor
function sendMailGoogleForm() {
 Logger.log('sendMailGoogleForm() debug start');

 //------------------------------------------------------------
 // 設定エリアここから
 //------------------------------------------------------------

 // 件名、本文、フッター
 var subject = "【＊＊】 受付しました。"; 
 var body
 = "フォーム送信、ありがとうございます。以下の内容で受付いたしました。\n\n"
 + "------------------------------------------------------------\n";
 var footer
 = "------------------------------------------------------------\n\n"
 + "\n\nよろしくお願いいたします。\n **チーム";

 // 入力カラム名の指定
 var NAME_COL_NAME = '名前'; //先程名前のフォーム項目部分
 var MAIL_COL_NAME = 'メールアドレス'; //メールアドレス収集の場合は項目名はメールアドレス


 // メール送信先
 var admin_name ="（任意の表示名｜例: ＊＊チーム）";//送信メールの名前 ※任意で編集。
 var admin = "（Gmailフィルタのアドレス）"; // Gmail フィルタのアドレスに書換
 var bcc = "";// bccがいらない場合は、adminを""に書換
 var reply = admin;
 var to = ""; // To: （入力者のアドレスが自動で入ります）

 

 // 送信先オプション
 var options = {};
 if ( admin_name ) options.name = admin_name;
 if ( bcc ) options.bcc = bcc;
 if ( reply ) options.replyTo = admin;
 
 
 //------------------------------------------------------------
 // 設定エリアここまで
 //------------------------------------------------------------

 try{
 // スプレッドシートの操作
 var sheet = SpreadsheetApp.getActiveSheet();
 var rows = sheet.getLastRow();
 var cols = sheet.getLastColumn();
 var rg = sheet.getDataRange();
 Logger.log("rows="+rows+" cols="+cols);

 // メール件名・本文作成と送信先メールアドレス取得
 for (var i = 1; i <= cols; i++ ) {
 var col_name = rg.getCell(1, i).getValue(); //カラム名
 var col_value = rg.getCell(rows, i).getValue(); //入力値
 body += "【"+col_name+"】\n";
 body += col_value + "\n\n";
 if ( col_name === NAME_COL_NAME ) {
 body = col_value+" 様\n\n"+body; //名前に様がつく
 }
 if ( col_name === MAIL_COL_NAME ) {
 to = col_value;
 }
 }
 body += footer;


 // メール送信
 if ( to ) {
 /* メールを送信 */
 GmailApp.sendEmail(
 to, //toアドレス
 subject, //表題
 body,　//本文
 {
 from: admin,　//fromアドレス
 name: admin_name　//差出人
 }
 ); 
}else{
 MailApp.sendEmail(admin, "【失敗】Googleフォームにメールアドレスが指定されていません", body);
 }
 }catch(e){
 MailApp.sendEmail(admin, "【失敗】Googleフォームからメール送信中にエラーが発生", e.message);
 } 
}
```
### 次の点を必ず修正してください
・ 「// 件名、本文、フッター」 部分（subject(=先方に見える件名）, body(=先方に見える本文）　の2箇所）　→両方とも必要に応じて編集。<b>ただし、body 部分の 点線に囲まれている"var footer"は絶対に削除しないこと。</b>
・ 「 // メール送信先」 部分（admin_name(=差出人メール送信者名）, admin(=差出人メールアドレス）　の2箇所）

→ admin（差出人メールアドレス）については、今から作成方法を記述するので、その作成したメールアドレスの利用をしてください。

３． “現在のプロジェクトトリガー”ボタンをクリック。
<img width="513" alt="スクリーンショット 2020-06-23 10.14.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/d252ed2e-c61a-8a69-a0ad-486389ed0682.png">

Google Apps Script の設定に進んでください。

# Google Apps Script での操作

１． Google Apps Script で、トリガーを追加します。<img width="1440" alt="スクリーンショット 2020-06-23 10.14.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/3068d396-3e27-6e16-dacc-cd8a211d1810.png">

２． <b>以下のようにトリガーを設定</b>します。各項目をクリックすると、プルダウンメニューにて選択が可能です。
<img width="709" alt="スクリーンショット 2020-06-23 10.20.13.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/0650fce8-e513-4a50-3759-88ae7cb42bd1.png">

３． 追加されていれば問題ありません。<img width="1166" alt="スクリーンショット 2020-06-23 10.34.27.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/5d82d158-95ef-058b-7c11-7338250975d4.png">

次にGmailでの設定へ進んでください。

--------

# Gmail の設定方法
１． Gmail にアクセスし、受信トレイを開く。
<img width="1440" alt="スクリーンショット 2020-06-22 15.25.01.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/62d6917e-5704-9f1e-abe1-a88d8e54c442.png">
２．上部の「メールを検索」をクリックし、任意のメールアドレスを作成および入力。その後、▼をクリック。
<img width="736" alt="スクリーンショット 2020-06-22 15.35.07.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/4cdb06cd-a552-e265-b760-786fbcfe66f4.png">

### メールアドレス作成時の注意
- <b> @より前部分の自分のメールアドレス は必ず入力。</b>
＊ この部分は自分の好きなものを入力できない。

- <b> + を入力して、任意の文字列を入力する。</b>
＊ 必ず「＋」が必要。＋の後ろに任意の文字列を。

- <b>学生の場合、末尾は @nnn.ed.jp を入力。@nnn.ac.jp は利用不可。</b>
＊ 教員の場合は逆。@nnn.ac.jp を入力。 @nnn.ed.jp は利用不可。

３． To に入力されていることを確認し、“フィルタを作成”をクリック。
<img width="743" alt="スクリーンショット 2020-06-22 15.44.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/8495e3a8-2dae-399d-591d-8dc523db8acc.png">

４． 何か実行する内容があれば選択。必要なければ“フィルタを作成”をクリック。
<img width="738" alt="スクリーンショット 2020-06-22 15.44.54.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/415cb63f-fbb3-b4e7-43bc-6138e97131b6.png">

# 試験運用
<b>一度、前述で作成した内容をテストしてみましょう。</b>

# 成功例
この操作を行うことで、以下のものを作成することができる。
<img width="887" alt="スクリーンショット 2020-06-22 15.50.11.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659932/aede6f8d-af2e-0a20-511a-39a34b713166.png">
→ 点線で挟んだ部分には、フォームに入力した内容がすべて記載される。

★ メールアドレスは+をつけてカスタマイズしている。
★ 送信者名もカスタマイズしている。
★ 件名もカスタマイズしている。

--------------
Google フォームの自動返信だと味気ない場合がある。その場合は、ぜひこの方法を使って、オリジナリティある文面を自動で送信しよう。

【アドオンで追加すれば良いんじゃない？という意見について】
文章の最初を読んでみよう。答えが書いているよ。