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活用の幅がぐっと広がりますよ!
コメント