質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

2回答

39295閲覧

Googleフォームで動的なフォームを作りたい

Crew

総合スコア15

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

1グッド

4クリップ

投稿2016/02/03 17:49

###前提・実現したいこと
Googleフォーム上でGASを用いて動的なフォームを作りたいのですが、初心者ゆえになかなかうまくできません。ご指導をお願いいたします。

実装したいことは、以下の通りです。
0. 参加人数を入力してもらう。
0. 入力された人数分の氏名入力欄を表示する。
0. (入力されたデータはGoogleフォームの標準機能でのスプレッドシートで集計したい)

現在、添付したコードによって解答欄を増減させられることは確認しています。

###不明点

  • Googleフォームでのスクリプトのトリガーが、起動時/送信時しかなく、「人数の入力~回答の送信」の間に以下のスクリプトを実行する方法が分からない

よろしくお願いいたします。

###ソースコード

Google

1function Dynamic(e) { 2 var responses = e.response.getItemResponses(); 3 var form = FormApp.getActiveForm(); 4 5 for (var i = 0; i < responses.length; i++) { 6 var itemResponse = responses[i]; 7 var question = itemResponse.getItem().getTitle(); 8 var answer = itemResponse.getResponse(); 9 10 if (question == "ソロチーム数"){ 11 for (var j = 0; j < answer; j++) { 12 var item = form.addTextItem(); 13 item.setTitle((j+1) + "人目のお名前"); 14 } 15 16 } 17 } 18} 19
ikuwow👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jinshan

2018/02/19 00:44

kei344さんの回答で解決されたようですね。斜め読みですが、Googleフォームを使用せず、動的HTMLでgetでGASにデータを渡して課題解決したという感じですか?
Crew

2018/02/19 11:41 編集

初めての利用だったため解決した際にベストアンサーの選定を失念しておりました.先にご回答いただいたのがkei344様だったため,jinshan様には申し訳ありませんがそちらをベストアンサーにさせていただきました.解決方法としては,依頼主に動的に確保できない旨を伝えたところ,「x人以上になることはないだろうから最大人数をx人で決め打ちしてもらっていい」とのことだったので枠を元から余分に用意し,スプレッドシート側で入力数と申請人数を示し合わせる形で行いました.お二方とも大変参考になりましたので,またの機会があれば動的HTMLでの作成にも挑戦してみたいと考えております.回答ありがとうございました.
jinshan

2018/02/21 00:41

ベストアンサーの件はお気になさらないでください。質問から実際に解決に至った方法まで残しておくことに意義があると思ってます
guest

回答2

0

私がフォームを使用した限り、トリガーの「起動時」は編集者の起動時だったかと記憶しているので、実質的に使用できません。

やりたいことの実現方法として、こういう方法はどうですか?
人数指定部分をプルダウンの単独セクションにして、
1人用、2人用、3人用、4人用…をそれぞれ事前に別セクションを用意しておいて、
プルダウンの選択内容によって、飛ぶ先のセクションを変える設定をしておく。
静的フォームによる疑似動的という感じです。

最終的にスプレッドシート側は、値が入るセルは違うところに入ってしまいますが、スプレッドシート側のスクリプトで別行を用意し、どうにでも編集加工できるかと思います。
フォームでメール送信などを考えている場合も、スクリプトで同一配列格納なんかで対応できると思います。

投稿2018/02/15 00:40

編集2018/02/15 01:16
jinshan

総合スコア107

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Googleフォームではそこまで動的な処理はできません。フォームの書き換えなどをGoogle Apps Scriptで行うこともできますが、状況に合わせて項目を変えるなどを実現するのであれば、下記の様な方法を使うといいと思います。

【【短いコードで色々出来る】Google Apps Scriptでスプレッドシートと連携した無料Ajaxフォームの作り方※サンプル付き【自動返信メールもあるよ】 - Qiita】
http://qiita.com/snowsunny/items/56a85c63598dcfb1b06e

フォーム作成部分がとても癖があって(GAS独自仕様みたいなもの)たいへんですが、がんばってみてください。

投稿2016/04/01 13:59

kei344

総合スコア69398

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問