GoogleフォームのGASはどこに書くのが正解?フォーム本体とスプレッドシートの違いを徹底解説!

当ページのリンクには広告が含まれています。
  • URLをコピーしました!

GoogleフォームのGAS、どこに書いてますか?

実は私自身、最初は「フォーム本体にGASを書くのが普通」と思っていました。
Slack通知や処理の自動化も、フォーム側にスクリプトを書いてやっていたんです。

でもある時ふと、「スプレッドシート側に書いてる人、多くない?」と気づいて調べてみたら……
書く場所によって向き・不向きがあることがわかったんです。

この記事はこんな人におすすめ
  • GoogleフォームとGASを使い始めたばかりの人
  • Slack通知や自動処理を試してみたい人
  • 「どこに書けばいいの?」とモヤモヤしていた人
目次

フォームにも、スプレッドシートにもGASは書けます

まず前提として、どちらにもApps Script(GAS)は書けます

書く場所アクセス方法
フォーム本体フォームを開いて[︙] → スクリプトエディタ
回答スプレッドシートスプレッドシートを開いて [拡張機能] → Apps Script

それぞれの特徴を比較してみましょう

項目フォーム本体回答スプレッドシート
スクリプトの対象Googleフォームに紐づく回答データを記録するシートに紐づく
主な用途フォーム項目の動的生成、バリデーション通知、自動処理、外部連携など
主なトリガーonFormSubmit(e)(フォームベース)onFormSubmit(e)(シートベース)
外部サービスとの相性△(制限あり)◎(柔軟で安定)
初心者の扱いやすさやや難しい比較的わかりやすい

通知処理や外部連携をしたいなら「スプレッドシート側」に書くのがおすすめ

たとえば、Googleフォームの送信と同時に

  • Slackに通知を送りたい
  • LINEやメールで自動返信したい
  • スプレッドシートの他のシートに転記したい

といった「処理の自動化」をしたいなら、
スプレッドシート側のApps Scriptを使うのが基本です。

🔐 OAuthの壁に注意しよう

Googleフォーム本体にもスクリプトを書けますが、
外部サービス(SlackやGmailなど)と連携しようとすると、うまく動作しないことがあります。

これは、Googleの「OAuth(認可)」の仕組みによるものです。

  • フォーム本体で設定されたトリガーは、回答者の操作として扱われる
  • そのため、スクリプトを設定した人の認可が効かず、Slack通知などの処理が失敗する可能性がある

🔁 つまり、トリガーは動いてるのに通知が来ない!という現象は、
このOAuthの壁
に引っかかっているかもしれません。

一方で、スプレッドシート側のスクリプトなら、自分の権限で安定して実行されるため、
通知処理や外部連携は断然スプレッドシート側に書く方が安心です。

フォーム本体に書くのが向いているケースもある

たとえば、

  • フォームの質問項目を動的に変更したい
  • 条件によってフォーム構成を切り替えたい
  • 管理者向けの内部フォームで、細かな制御をしたい

こういったケースでは、フォーム本体のスクリプトエディタを使うのが適しています。

まとめ:用途に応じて書く場所を選ぼう

処理内容おすすめの書き場所
通知処理(Slack、Gmailなど)✅ 回答スプレッドシート側
外部サービスとの連携、自動化✅ 回答スプレッドシート側
質問項目の動的変更、入力制御✅ フォーム本体

関連記事 ▶ Slack通知を設定したい方はこちら

📌 Googleフォーム送信時にSlack通知を飛ばす方法はこちら

ご自身の目的に合わせて、書く場所を選べるようになるとGAS活用の幅がぐっと広がりますよ!

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次