【PHP・Googleフォーム】PHPの処理でGoogleフォームに自動で回答する方法

はじめに

今回はPHPで作成したホームページから自動でGoogleフォームに回答する方法を紹介します。

あるページのフォームから送信された入力内容によってバリデーション処理を施したのちにGoogleフォームにデータを送信する際などに活用できますので今回紹介する方法をぜひ活用ください。

Googleフォームの設定

ご自身のGoogleアカウントでGoogleフォームを作成して回答ページを開いてください。

続いて、回答ページを右クリックして「検証」をクリックして開発者モードでページのHTML要素を確認できる状態にします。

HTMLの要素から「entry」という単語を検索機能(ctrl+Fまたはcmd+F)を使って探します。

検索した結果の中に「entry.数字」となっているものが連続して並んでいるものが確認できます。

これがGoogleフォームで作成した質問内容のIDとして識別されるコードになります。

こちらはPHPの設定の際に使用するので質問内容と各々の値を対応づけてメモを取っておきましょう。

続いてはGoogleフォームのデータ送信先のURLを取得します。

先ほどと同様にHTMLの要素から「action」というキーワードで検索します。

検索結果の中からformタグの属性のactionを探してその中の値(URL)をメモします。

こちらのURLに先ほどの質問内容のパラメタでリクエストを行う流れになります。

PHPの設定

WordPressやLaravel、DockerなどでPHPが動作する環境を作成してください。

作成したら次のコードを動作させることでGoogleフォームに対してPHPから自動送信処理を行うことができます。

<?php
  // 質問の回答内容を設定
  $post_data = array(
    // 質問1
    'entry.56265335' => "回答1",
    // 質問2
    'entry.799826487' => "回答2",
    // 質問3
    'entry.53826950' => "回答3",
  );
  $form_url = "https://docs.google.com/forms/u/0/d/e/-------/formResponse";
  /******** フォームへのPOST処理 ********/
  $ch = curl_init($form_url);                                          // CURLをinit
  curl_setopt($ch, CURLOPT_POST, TRUE);                                // POSTで送信
  curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));  // データをセット
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);                      // 受け取ったデータを変数に
  $html = curl_exec($ch);                                              // POSTリクエストを実行
  /******** エラー処理 ********/
  // エラーコード表示用変数
  $CURLERR = NULL;
  if(curl_errno($ch)){        //curlでエラー発生
    $CURLERR .= 'curl_errno:' . curl_errno($ch) . "\n";
    $CURLERR .= 'curl_error:' . curl_error($ch) . "\n";
    $CURLERR .= '▼curl_getinfo' . "\n";
    foreach(curl_getinfo($ch) as $key => $val){
      $CURLERR .= '■' . $key . ':' . $val . "\n";
    }
    echo nl2br($CURLERR);
  }
  curl_close($ch);
?>

ここで、「$post_data」内の「entry.数字」のところと「$form_url」は先ほどのGoogleフォームの設定の章でメモした値に変更してください。

上記のコードをWEBサイトであればheaderを構成するところで実行すればWEBページを開いた際にGoogleフォームに回答をすることができるようになります。

ここで、「$post_data」の中の値をGetやPostのクエリに変更することでユーザーがGoogleフォームに直接回答せずに間接的に回答することができるようになります。

解析用のデータの収集などできることは無限なのでぜひ活用してみてください。

おわりに

今回はGoogleフォームに対してPHPを用いて自動で回答する方法を紹介しました。

冒頭でも説明した通り、Googleフォームの回答URLをユーザーに見える形で提供したくない場合に非常に便利ですので、ぜひこの方法を活用していただければと思います。

また、わからない点や不備などがございましたらコメントをお願いいたします。

今後もプログラミングに関する情報を発信して「なんだろう」を「なるほど」に変えていきます!

お気に入り登録お願いします!!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です