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

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

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

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

Q&A

1回答

1542閲覧

フォームの回答数を取得したい

fal_boy1

総合スコア10

Google Apps Script

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

0グッド

0クリップ

投稿2018/11/16 11:22

前提・実現したいこと

GASを使用してフォームの答えをスプレッドシートに保存するスクリプトを作成しています。

フォームの形式

設問数→ 30問 すべてラジオボタン形式の質問
質問→ ・はい ・いいえの2パターンのみ

実現したいこと

第(i)問目を、「はい」と答えた人数をカウントしたいと考えています。(i =0~29)

質問

MultipleChoiceItem クラスにはgetPoints()という関数がありますが、この関数は回答数を取得する関数とは違うのでしょうか?

GAS

1var items = form.getItems(); 2 3for(var i = 0; i < items.length ; i++) 4{ 5 var m_item = items[i].asMultipleChoiceItem(); //MultipleChoiceItemにキャスト 6 var score = m_item.getPoints(); //該当の関数. 投票数が返ってくる予定だった 7 Logger.log(score); //すべての回答が0.0と出力された 8}

Formからレスポンスを取得し、全員の回答をfor文でループしカウントするプログラムでは作成することができました。しかし、回答者数(約30名)・設問数(30問)と処理回数が多いため、かなりの実行時間がかかりました。

参考にしたサイトのURL↓
https://yukaobu.wordpress.com/2016/10/23/googleform-2/

質問ごとに得票数をカウントすることを再現することはGoogle Apps Scriptでは不可能なのでしょうか?

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

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

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

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

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

guest

回答1

0

質問

質問ごとに得票数をカウントすることを再現することはGoogle Apps Scriptでは不可能なのでしょうか?

時間は掛かっているけど可能だと分かっておられるとおり可能です

現状

Logger.log(score); //すべての回答が0.0と出力された

form.getItems();として取得できるのは、編集で作っている状態の回答項目です。Responseではないので。
フォームの編集画面って、どこにもチェックついてないでしょう?なので0なのだと思います。それのpointを取得してもあまり意味がないです。

提案(カウントする方法)

GASを使用してフォームの答えをスプレッドシートに保存するスクリプト

という文面からすると、スプレッドシートに答えのリストがあるのですよね?(スクリプトがなくてもデフォルトで集計する機能がありますし、ありますよね?)

スプレッドシートはエクセルみたいなものなので、そこで回答を集計してはどうでしょう?
countifみたいなシート関数が使えるのではないでしょうか?

投稿2018/11/16 11:35

papinianus

総合スコア12705

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

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

papinianus

2018/11/16 11:52

遅いということなんですが、例えば↓のような記事があります。 https://qiita.com/kawahara_hiroyuki/items/463ea2b348080f38a578 要約的に言うとやりかたによって何倍もの処理の開きがあるということです。30人の30項目は、慣れた人が処理すれば数秒もかからないと思われます。
papinianus

2018/11/16 12:20

実現したいことに書いてあることベースで回答しておりました。 改めて参考サイトを拝見しました。参考サイトのようなことがしたいなら提案で書いたことは無意味ですね。
fal_boy1

2018/11/19 07:03 編集

回答ありがとうございます。返信が遅くなり申し訳ありません。 編集中の回答項目というので、とても納得がいきました。 コメント頂いたサイトを拝見したことがあり、処理にAPIを叩く回数はできる限り減らしています。 スプレッドシートの状態を配列に取得してから、すべて配列上で処理を行っていく方針にしているのですが、時間がかかります。もう少し思考が必要ですね... ありがとうございました。
papinianus

2018/11/19 08:15

私に限らず有益な回答を得るためには、ぜひとも"実現したいこと"を"質問本文に"追記・補充していただきたいのですが、「どのタイミング」で「どういう用途」でその集計を利用するのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問