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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

Google

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

Q&A

解決済

1回答

1200閲覧

[GAS]フォームで繰り返し作業のやり方について

aRyo

総合スコア23

Google フォーム

Google フォームは、 Google社が提供しているアンケートフォーム作成および集計ができる無料のツール。Googleアカウントがあれば利用が可能です。集計データは、スプレッドシートに収集され、データ分析もできます。

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Google Apps Script

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

Google

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

0グッド

1クリップ

投稿2021/11/10 22:20

[GAS]フォームで繰り返し作業のやり方

フォームにて質問で、回数を選択し選択された回数分、繰り返し作業を行いたいです。

GAS

1form.addListItem() 2 .setTitle('個数は?') 3 .setChoiceValues(['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20']) 4 .setRequired(true);

この質問から回答を変数に格納してFOR分で回答分、繰り返しさせたいと考えています。

いくつか調べていくとトリガーからだと可能だと分かりました。
出来ればスクリプト上で出来ないかと考えているのですが、何か方法ありますでしょうか?

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

たとえば下記の手順により 「フォームの送信」をトリガーとして、回答内容に応じた処理を実行することができま
す。


1.フォーム編集画面の「回答」タブの右上にあるスプレッドシートのマークをクリックして、回答集計用のスプレッドシートを開きます。
イメージ説明


2.開いたスプレッドシートのメニューから「拡張機能」->「Apps Script」を選択します。
イメージ説明


3.スクリプトエディタが出てくるので、下記のコードを入力して保存します。

下記コード内の「targetQuestion」はここでは質問文記載と同じ文章(「個数は?」)にしています。
実際の質問文に合わせて変えてください。
(質問文と比較して一致する場合に処理するようになっているので、
実際の質問文と同じ文字列でないと期待する動作になりません)


下記のdoSomething関数のcount引数に、フォームで選択した回数が渡されますので、
ここに実際に繰り返し行わせたい処理を記述してください。

(下記では例として、単純にcountをログ表示するだけのコードとなっています)

js

1function onFormSubmit(e) { 2 const targetQuestion = "個数は?" 3 const values = e.namedValues; 4 if (values == null || values[targetQuestion] == null) { 5 Logger.log("有効な回答がありません。" + JSON.stringify(e)); 6 return; 7 } 8 doSomething(values[targetQuestion][0]) 9 10} 11 12function doSomething(count) { 13 Logger.log(count) 14} 15

4.スクリプトエディタの左端の時計マークをクリックして、下記のようにトリガーを設定します。
・実行する関数:上で記入した関数名(ここではonFormSubmit)
・イベントのソース:「スプレッドシートから」
・イベントの種類「フォーム送信時」
->保存ボタンを押す。
イメージ説明


 


上記により、「フォーム送信時」をトリガーとして「特定の回答で選択した内容」を取得して処理を実行させることが可能です。

 
※なお、ユーザーのフォーム送信時ではなく、ユーザーが回答を選択した瞬間にその回答内容に応じて処理を実行することは、Googleフォーム・GAS標準の機能では不可能です。

投稿2021/11/13 07:29

編集2021/11/13 08:59
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

aRyo

2021/11/15 22:39

回答ありがとうございます。 ユーザーが回答を選択した瞬間にその回答内容に応じて処理を実行はできないのですね!知りませんでした。 教えて頂いた方法でやりましたら、回答の取得は出来ました。 しかし、回答ごとに新たにトリガー設定しないといけない?みたいな疑問が多く出来ました。 またわからない点ありましたら、質問させていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問