GoogleForm | HTMLページへの埋め込み ③

Other
スポンサーリンク

HTML化したGoogleFormを送信した後、オリジナルの「お問い合わせありがとうございます」ページが表示されるようにます。

mik
mik

GoogleFormにオリジナルの問い合わせフォーム化することまで完了したけど、今のままだとフォームを送信した後、GoogleFormの回答済のページに遷移してしまうね。

sugar
sugar

問い合わせ自体は送信できてるからそれでいいんじゃない?

mik
mik

いやいや、それだとフォームをHTML化した意味がなくなってしまう。それにサイト本体を離れてしまうことになるからSEO上よろしくないね。送信後、最初に作ったThanksページが表示されるように変えていこう!

フォームの送信・受信は確認済ですが、エラー時のサポートは行っておりません。

全体の流れ

操作手順

7. 問い合わせフォームにコードを追加

お問い合わせページのコードエディタで開き、コードをいくつか追加します。

formタグの後にJavascriptを追加

現時点のformタグのすぐ後には入力項目を囲むdlの開始タグと名前のラベルを囲むdtタグが来ています。
formタグの直後に以下のスクリプト(Javascript)を追加します。

<script type="text/javascript">
    var submitted = false;
</script>

Javascriptの後にiframeを追加

JSの直後に以下のiframeを追加します。

<iframe name="hidden_iframe" id="hidden_iframe" style="display: none" onload="if(submitted)  {window.location='thanks.html';}"></iframe>

追加した後のformタグ周りは以下のようになります。

<form action="https://docs.google.com/forms/*/*/*/*/*******(*部分には固有コードが入ります)**************/formResponse" method="post" target="hidden_iframe" onsubmit="submitted=true;">
<script type="text/javascript">            
var submitted = false;          
</script>          
<iframe name="hidden_iframe" id="hidden_iframe" style="display: none" onload="if(submitted)  {window.location='thanks.html';}"></iframe>
<dl>
<dt><label for="name">お名前</label></dt>
mik
mik

thanks.htmlというのは、①で作成した「お問い合わせありがとうございました。」のページです。別の名前にした時はそちらを入れてください。

これでコードの追加は完了です。

sugar
sugar

とりあえず、ほっ♪

8. thanksページの表示テスト

手順7で追加したコードがきちんと働いてthanks.htmlページが表示されるか確認します。
問い合わせページ(contact.html)からテストメールを送り、送信後にthanksページが表示されれば成功です。

9. 問い合わせ情報の転送

mik
mik

送信者側からすると、入力~送信後までとてもスムーズになったわけだけど、受信側からするとGoogleFormの回答シートを見るか、回答シートに設定するアラートを受け取るかしないと問い合わせがあったかどうか知る方法がないから不便だね。

sugar
sugar

問い合わせの内容をメールで送ってもらうことはできるのかな?こうすると問い合わせがあったことと、その内容が一度でわかって一石二鳥だよ。

mik
mik

もちろんできるよ。今からその方法を伝授するね。

GoogleFormのスクリプトエディタを開く

作成したGoogleFormの編集画面を開き、右上の三点メニューをクリックします。

表示されるメニュー項目から「スクリプトエディタ」を選択します。

ここで扱うスクリプトは Google Apps Script (GAS) になります。

スクリプトエディタが表示されます。デフォルトで既にスクリプトが記載されています。
これは不要なのですべて削除します。

「無題のプロジェクト」となっているプロジェクト名を任意のもの(MyProjectなど)に変更してください。

メール転送用のスクリプトを書く

空白になったエディタに以下のスクリプトを記入します。

function sendForm(e) {
  
  itemResponses = e.response.getItemResponses();

  const recipients = ['xxx@xxx.co.jp'];
  const subject = 'フォームの回答をメール転送';

  let body = '';
  body += 'Googleフォームに回答がありました。\n\n';
  for (let i = 0; i < itemResponses.length; i++) {
    const itemResponse = itemResponses[i];
    const question = itemResponse.getItem().getTitle();
    const answer = itemResponse.getResponse();
    body += '【' + question + '】\n' + answer + '\n\n';
  }

  for (let i = 0; i < recipients.length; i++){
    GmailApp.sendEmail(recipients[i], subject, body);
    console.log(recipients[i]);
  }
}
  • 関数 functionの名前を「sendForm」にします。
  • 定数 const recipientsに送信先のメールアドレスを代入します。
    上記スクリプトでは、「xxx@xxx.co.jp」としています。
mik
mik

スクリプトの作業はこれで終わりだよ。

トリガーを設定する

sugar
sugar

トリガーって何?

mik
mik

トリガーはスクリプトを実行させるスイッチみたいなものだよ。これがないとスクリプトを作っても何も起こらないからね。

左のメニューから「トリガー」を選択します。

トリガー画面が表示されますので、右下の「トリガーを追加」ボタンをクリックします。

実行する関数、イベントのソース、イベントの種類、エラーの通知時期を設定します。

  • 実行する関数 sendForm
  • 実行するデプロイ (ここはデフォルトのまま)
  • イベントのソース フォームから
  • イベントの種類 フォーム送信時
  • エラー通知設定 毎日通知を受け取る

ここまで設定して「保存」ボタンをクリックします。

Googleアプリを認証する

GASでスクリプトを作成すると、ひとつのGoogleアプリとして認識されます。このアプリを使えるようにするには、自身のGoogleアカウント上で認証する必要があります。

トリガーの「保存」ボタンをクリックすると、Googleのアカウント選択証画面が表示されます。先ほど命名したプロジェクト名(デフォルトでは無題プロジェクト)が表示されますので、これをクリックします。

アクセスのリクエストを許可します。

mik
mik

これでやっとスクリプトが実行できるよ。

sugar
sugar

道のりが長すぎ…。

10. メール転送のテスト

mik
mik

フォームを送信して内容が転送されるかどうか確認するよ。

お問い合わせページ(contact.html)をブラウザで開いて、そこからフォームを送信します。
ここでは架空のメールアドレス(yugure@yahoo.jp)を使用しています。

送信先に設定したメールアドレス宛に送信したメールが届いたら転送は成功です。

sugar
sugar

道のり長すぎだよー。トリガーのあたりで頭真っ白になったよ。

mik
mik

ははは。わからなくなった深呼吸して、また戻ってきてよ。