GhostForm

CORS endpoint only for Google Form

What

これは何か

Google Form の為だけのCORSエンドポイントです。 これを活用する事で、クロスオリジンの制約を回避し、フロントエンドだけで Google Form へリクエストを送信できます。

Google Form以外へのリクエストは送信する事はできません。

How

どう働くか

GhostForm の送信用エンドポイントURLに、要件を満たしたリクエストを送れば Google Form のフォームに転送されます。

Request

Endpoint URL https://ghostform.net/api/v1/submit
method POST
Content-Type application/json

RequestBody (JSON)

url string

Google Form の送信先URL

http://docs.google.com/forms/d/e/0XXXx_Xx0x0xXxxXX_XxX/formResponse

data { [key: string]: string }

送信するフォームデータ

{ 'entry.012345': '山田太郎', 'entry.123456': '23', 'emailAddress': 'test@example.com' }

リクエストボディの情報は、上のフォーム(または こちら)から解析するか、あるいは Google Form のページで devtool などを使ってマニュアルで抽出します。

devtoolで情報を取得する

Errors

GhostForm 側での検査時にエラーが発生した場合、ステータスコード 400 とエラーメッセージが返されます。 Google Form への送信時にエラーが発生した場合も同様にエラーが返されますが、エラーメッセージは返されず、Google Form リクエスト時のレスポンス本文が返されます。

INVALID_CONTENT_TYPE_ERROR Content-Type ヘッダーが正しくない
INVALID_PROPS_ERROR リクエストボディが、正しくプロパティを備えていない
INVALID_PROPS_TYPE_ERROR リクエストボディのプロパティの型が正しくない
INVALID_URL_ERROR url が正しい Google Form のURLではない
INVALID_DATA_KEY_ERROR data のキーが正しい名前ではない
INVALID_DATA_VALUE_TYPE_ERROR data の値が正しい型ではない

Good

良い点

  • サーバーサイドを書かずに Google Form にリクエストを送信できる
  • iframe を利用したハックと異なり、フォーム送信の失敗を検知できる

Bad

悪い点

  • Google Form に起因して送信に失敗した場合、「どの項目で、なぜ失敗したか」を取得できない
  • Google Form を採用するメリットの一つでもある「自由に項目を編集できる」点がころされてしまう (編集する度にフロントのコードは書き直さなければいけない)

Why

なぜ作ったか

2021年1月まで、この目的においては cors-anywhere が有用でしたが、 便利なあまりユーザーの濫用が増加したためにホスティングしている Heroku から止めるように要求があり、現在では開発目的での使用に制限されるようになったそうです。 ( 参考 ) そこで用途を可能な限り狭めたGoogle Form専用のプロキシサービスを開発するに至りました。

しかしながら、このサービスは実験の成果物に過ぎず、Google Formへ外部からリクエストを送信する手法の有用性を示すものではありません。 作者はこのサービスを使用を敢えて薦めません。 あなたの要件を満たすに適したソリューションは、きっと他にあるでしょう。

Policy

規約・免責など

利用規約

以下の規約に同意いただける方のみ当サービスをご利用ください。(ご利用いただいた時点で、規約に同意いただいたものと致します)

  1. 商用・非商用に関わらず無償でご利用いただけます。
  2. 過度なアクセス等、当サービスに悪影響を及ぼす物につきましては一時的・部分的に制限を掛けさせていただく場合がございます。
  3. 当サービスの運営は可能な限りの正確性と安定性に務めますが、完全に安定した機能の提供を約束するものではありません。
  4. 当サービスは作者の都合により、予告なく変更・停止・閉鎖させていただく場合がございます。
  5. 当サービスをご利用いただいた事、または利用できない状態になった事による一切の損害について、責任は負いません。

プライバシーポリシー

  • 本サービスでは、サイトにアクセスされた個人から必要な範囲内で個人情報を収集する事があります。収集にあたっては適法かつ公正な方法によってこれを行います。
  • Google Form との間で送受信されたデータに関して、本サービスは収集・保管を行わず、一切の関与をいたしません。