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

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

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

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

Google フォーム

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

Google Apps Script

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

Q&A

2回答

1104閲覧

【Google Apps Script(GAS)】Googleフォームの回答内容を、好みの形でスプレッドシートに集計する

anna.y

総合スコア9

Google スプレッドシート

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

Google フォーム

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

Google Apps Script

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

0グッド

1クリップ

投稿2019/08/05 09:16

やりたいこと

Googleフォームで回答したスプレッドシートを、好みの形でスプレッドシートに集計したい

参考にしたサイト

https://vba-gas.info/gas-googleform-1

function form(e) { var timeStamp = e.namedValues[“タイムスタンプ”]; var name = e.namedValues[“お名前”]; var opinion = e.namedValues[“ご意見”]; var ss_id = ‘[スプレッドシートのIDを記載]’; //スプレッドシートのIDを指定 var sh_name = ‘アンケート集計’; //スプレッドシートのシート名を指定 var sh = SpreadsheetApp.openById(ss_id).getSheetByName(sh_name); var last_row = sh.getLastRow(); sh.getRange(last_row + 1, 1).setValue(timeStamp); sh.getRange(last_row + 1, 2).setValue(name); sh.getRange(last_row + 1, 3).setValue(opinion); }

困っていること

【TypeError: undefined からプロパティ「namedValues」を読み取れません。(行 4、ファイル「コード」)】というエラーになります。

上記サイトの例にならうと、「アンケート集計」というシート上には「タイムスタンプ」というデータは存在しないため、
「タイムスタンプ」のデータがある、フォームの回答シートを指定できているのか?という疑問があります。
(同ブックなのでスプレッドシートのIDは同様のため)


※※※初心者のため、質問の仕方がわかりにくく申し訳ございません※※※

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

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

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

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

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

guest

回答2

0

javascript

1function onFormSubmit(e) { 2 const timeStamp = e.namedValues["タイムスタンプ"]; 3 const name = e.namedValues["お名前"]; 4 const opinion = e.namedValues["ご意見"]; 5 6 const sh_name = "アンケート集計"; //スプレッドシートのシート名を指定。あらかじめ存在していること 7 const target = e.range.getSheet().getParent().getSheetByName(sh_name); 8 target.appendRow([timeStamp, name, opinion]); 9}

投稿2019/08/06 08:12

papinianus

総合スコア12705

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

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

papinianus

2019/08/06 08:15

タイムスタンプやお名前、ご意見という回答項目がある アンケート集計というシートがある。 ということを前提にしています。 またトリガーはフォームの回答が送信されてくるスプレッドシートで設定する必要があります
guest

0

関数の実行をするのではなく、トリガー設定をする必要があります。

フォーム送信時として、トリガーを設定してください。

余談ですが、集計という作業をするのにこういうコードは不適切です。
集計というからには回答期限を切って全ての回答をまとめるはずです。
であれば、回答期限が過ぎてからシートから適切なセルをコピーしてグラフを作ることに時間をかけたほうが、いまからプログラミングを勉強して一件ずつコピーするだけのコードに時間を使うより有意義だと思います。

投稿2019/08/05 09:55

papinianus

総合スコア12705

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

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

anna.y

2019/08/05 09:59

回答いただきありがとうございます! >フォーム送信時として、トリガーを設定してください。 トリガーの設定がスクリプトの保存ができなく、できない状態です。 アドバイスいただきありがとうございます! 背景の記載が足りておりませんでしたが、社内の業務依頼受付にGoogleフォームを使用しており、 永続的に回答が発生するため、リアルタイムで集計を行いたいという目的があります。
papinianus

2019/08/05 22:21

で、トリガーを設定したらどうなりましたか?
anna.y

2019/08/06 00:47

以下流れで、トリガーを設定しても起きません…。 ①トリガーを「フォームの送信時」で設定 ②Googleフォームより回答 ③回答シートに回答が入る ④データを作成したいシートは空白
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問