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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

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

Google Apps Script

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

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

Q&A

解決済

1回答

691閲覧

Googleフォームのチェックボックスをスプレッドシートに表示したい

TAMAGAWA

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google フォーム

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

Google Apps Script

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

checkbox

checkboxは、GUIのエレメントです。また、HTML<input>タグのtype属性で扱われる値を指します。

0グッド

1クリップ

投稿2023/03/24 06:54

実現したいこと

複数のGoogleフォームの回答を1つのスプレッドシートにまとめること

前提

複数のGoogleフォームの回答を1つのスプレッドシートにまとめるスクリプトを作成しています。
トリガーを設定し、フォーム送信時にスプレッドシートに飛ぶようにしています。

発生している問題・エラーメッセージ

以下のスクリプトをGoogleフォームのスクリプトエディタで作成したところ、
一部チェックボックスの項目が複数選択の場合、一つしか表示されなくて困っています。
ネットや参考書で調べましたが、解決できず、アドバイスいただけると幸いです。

該当のソースコード

GAS

1var ss = SpreadsheetApp.openById("ID"); 2var sh = ss.getSheetByName("シート名"); 3var lr = sh.getLastRow(); 4 5function onFormSubmit(e){ 6var data = e.response.getItemResponses(); 7var formName = FormApp.getActiveForm().getTitle(); 8var timeStamp = e.response.getTimestamp(); 9for (var i=0; i<data.length; i++) { 10sh.getRange(lr+1,1).setValue(formName); 11sh.getRange(lr+1,2).setValue(timeStamp); 12sh.getRange(lr+1,i+3).setValue(data[i].getResponse()); 13} 14}

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

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

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

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

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

guest

回答1

0

ベストアンサー

チェックボックスの場合、getResponse() で取得できる値は回答の配列になっているので、join() を使って配列をカンマで区切った1つの文字列に変換します。

js

1var ss = SpreadsheetApp.openById("ID"); 2var sh = ss.getSheetByName("シート名"); 3var lr = sh.getLastRow(); 4function onFormSubmit(e) { 5 let data = e.response.getItemResponses(); 6 let formName = FormApp.getActiveForm().getTitle(); 7 let timeStamp = e.response.getTimestamp(); 8 for (let i = 0; i < data.length; i++) { 9 sh.getRange(lr + 1, 1).setValue(formName); 10 sh.getRange(lr + 1, 2).setValue(timeStamp); 11 let items = data[i].getResponse() 12 if (data[i].getItem().getType() == FormApp.ItemType.CHECKBOX) { 13 items = items.join(); 14 } 15 sh.getRange(lr + 1, i + 3).setValue(items); 16 } 17}

投稿2023/03/24 17:09

編集2023/03/24 21:58
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問