---
title: "GoogleFormカスタマイズでライトなスパム対策"
date: 2026-10-01
categories: column
author: 平林
canonical: https://www.liberogic.jp/topics/20261002-google-form-spam/
---

# GoogleFormカスタマイズでライトなスパム対策

![](https://images.microcms-assets.io/assets/4b13731f29254025b91c8d846198ffc9/92a271e7eb7f4a4b80b099e6c4faa129/cover%402x.png)

Webサイトの問い合わせフォームをGoogleFormに乗り換えたいというご要望によって以前実装したGoogleFormカスタマイズ。そんな中、迷惑メールが大量に送られてくるので対策はありますか？とのご依頼が。今回はGoogleFormコラム第三弾としまして、GoogleFormカスタマイズのスパム対策についてまとめました。

Webサイトの問い合わせフォームをGoogleFormに乗り換えたいというご要望によって以前実装したGoogleFormカスタマイズ。

コラムにまとめて公開しているのですが、ありがたいことにたくさんの方が参考にしてくださっているようです！ありがとうございます。  
  
[**GoogleFormでお客様のフォームを作るときの落とし穴**](https://www.liberogic.jp/topics/20241127-googleform-point/)  
[**GoogleFormカスタマイズの確認画面を実装**](https://www.liberogic.jp/topics/20250808-googleform/)

そんな中、迷惑メールが大量に送られてくるので対策はありますか？とのご依頼が。  
今回はGoogleFormコラム第三弾としまして、GoogleFormカスタマイズのスパム対策についてまとめました。

まず対策として思い浮かんだ案が、Googleが提供する無料のセキュリティサービス**reCAPTCHAの導入はできないか？**ということ。

ですが、

> Google フォームには「reCAPTCHAを有効にする」というような標準設定・トグルは存在しません。フォームの編集画面にもそうした項目はなく、Googleが公式に用意している機能ではないというのが正しい認識です。

とのこと。さらに調べたところ、GoogleFormのreCAPTCHAはGoogleの判断によって機能するものらしく、reCAPTCHAマークが出現するか否かが分かりません！

そもそも、GoogleFormのカスタマイズは`entry.386122698`のうようなフィールドIDをHTMLに入力するため全て平文で見えてしまいます。このURLとentry IDさえ分かれば、ブラウザでこのページを開かずともcurlやPythonのrequestsのような単純なスクリプトから直接formResponseへPOSTを送りつけることが技術的に可能です。

実際、Google Formのスパムの多くはこの「ページを経由せず直接エンドポイントを叩く」パターンのようで、これはreCAPTCHAを入れても同様で、トークン検証をGAS側などサーバーサイドで行わない限り直接POSTの経路には効きかず、根本解決にはなりません。

ですが、対策はある！

実際のスパムボットには、汎用的な「お問い合わせフォームを見つけて自動入力して送信する」タイプ(ページを実際にレンダリングしてDOM経由で送信するボット)も多く存在します。

このタイプに対しては、送信ボタンをJSで制御する仕掛けは一定の効果があります。精度を上げるなら、仕掛けをいくつか組み合わせるのがおすすめです。いずれもHTMLファイルの変更だけで完結し、Googleフォーム側・GAS側は一切触りません。

参考：[reddit] [How can I prevent bots from spamming my Google Form and flooding my email?](https://www.reddit.com/r/GoogleForms/comments/1l66pi4/how_can_i_prevent_bots_from_spamming_my_google/)

### 1. JSで毎回ランダムな数字同士の足し算を生成して表示する。

Math.floor(Math.random()*9)+1 同士の足し算をランダム生成した簡単な計算式です。JSでページ読み込みのたびに例えば「3 + 5 = ?」のような数字をランダム生成して画面に表示し、ユーザーが正しい答えを入力するまで送信ボタンをdisabledのままにする、という仕掛けです。

ユーザーには多少の手間になってしまいますが、見た目のUIに反応せず送信ボタンを押しにいく汎用ボットに引っかかる傾向があります。

![](https://images.microcms-assets.io/assets/4b13731f29254025b91c8d846198ffc9/5d7d724be27643a08458d93ce7283d60/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202026-09-03%2017.37.22.png)

### 2. ハニーポット欄（見えない入力欄）による自動判定

CSSで画面外に配置し、人間の目には見えない入力欄を1つ用意する。人間が使う際にはこの欄を触ることはないが、フォームを機械的に全項目埋めてから送信するタイプのボットはここにも値を入れてしまうため、送信時にこの欄に値が入っていた場合は送信をキャンセルする仕掛けです。

効果があるのは「フォーム上の入力欄を(見えるかどうか関係なく)機械的に全部埋めてから送信する」タイプのボットです。この手のボットは非常に多いので対策として期待できそうです。

![](https://images.microcms-assets.io/assets/4b13731f29254025b91c8d846198ffc9/6f07f1526c28493da80fd69224cba04c/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202026-09-03%2017.47.39.png)

それぞれ検知できるボットのタイプが異なるため、両方を組み合わせた方が取りこぼしが少ないです。

「ページを経由しない直接POST型のスパム」に対しては引き続き効果が及ばない点は変わりません。

Webサイトのページを経由せずGoogleFormに直接スパム攻撃されると結局GoogleForm自体を再作成しなければなりません。

それを踏まえた「一部の一般的なボットに対する軽減策」として導入する分には、かなり有効ではないでしょうか！
