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

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

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

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

Google フォーム

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

Google Apps Script

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

Google

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

Q&A

解決済

2回答

2336閲覧

【googleフォーム】スプレッドシートにフォームタイトルを反映させる

maikoK

総合スコア1

Google スプレッドシート

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

Google フォーム

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

Google Apps Script

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

Google

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

0グッド

3クリップ

投稿2021/10/20 06:56

前提・実現したいこと

googleフォームで講座の申し込みを受け付けています。

その申込情報をひとつのgoogleスプレッドシートに保存し、
講座日付ごとにシートを分けて管理したいです。

講座は年間で60回ほど開催します。

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

回答の保存先を一つのスプレッドシートにまとめることはできたのですが、
シート名にフォームのタイトルが反映されず
「フォームの回答1」「フォームの回答2」…となってしまいます。
イメージ説明

GASを使って、シート名にフォームタイトルを反映させることはできますか?

どなたかお解りになりましたら教えていただけますと嬉しいです。
よろしくお願いします。

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

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

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

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

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

guest

回答2

0

ベストアンサー

Form.getTitle() は現時点ではnullを返し有効に機能しません。
Issue trackerより

公式によって修正され、getTitle()が正常に動作するようになりました

FormApp#getTitle()を使用したコードについては
https://teratail.com/questions/kros5rm95gnx42#reply-2hqbt0gt18ne2m
を参照してください。

下記はgetTitle()のバグ修正前の対応方法として残しておきます。


DriveApp と Form.getId()で代用します。

1.各フォームについて、フォームのスクリプトで下記を記述します。
(スプレッドシートのスクリプトではありません。各フォーム編集画面の右上の縦に並んだ3点マークから「<>スクリプトエディタ」を選択してください)

 

function onFormSubmit(e) { //FormApp.getActiveForm(); const ssid = e.source.getDestinationId(); const title = DriveApp.getFileById(e.source.getId()).getName() SpreadsheetApp.openById(ssid).getActiveSheet().setName(title) }

※( //FormApp.getActiveForm();のコメントは外しても外さなくてもよいです。権限承認のために必要)

 
2.トリガーでonFormSubmit関数を、フォーム送信時に実行するように設定します。

3.スクリプトエディタ上で上記コードを1度実行し、必要な権限を承認します。

4.あとは各フォームから(最低1回)回答すれば、フォームタイトルがシート名に変わると思います。

※各フォームタイトルの名前は必ず異なる名前であることを確認してください。同じフォームタイトルから回答すると、同じシート名に変えようとするためエラーになりタイトルは変わりません。

・DriveAppには使用回数制限があるため、他のスクリプトでDriveAppを使っている場合は、タイトルを変えたフォームフォームのトリガーは順次削除した方がよいかもしれません。
(そうしないと回答がある度にトリガーが呼ばれDriveAppの使用回数を消費することになるため)

投稿2021/10/23 01:17

編集2022/05/02 23:24
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

maikoK

2021/10/25 06:03

質問にご回答いただきありがとうございました。 教えていただいた方法で解決できました! 順番にご丁寧に説明していただけたので、初心者の私でも設定することができました。 本当にありがとうございました。
guest

0

stackoverflowより

Sheet.getFormUrl() から Form の URL が取れるので、FormApp.OpenByUrl() で Form を得て、その Form.getTitle() でタイトルを取得できそう。

やったことはないです。

投稿2021/10/22 20:50

papinianus

総合スコア12705

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

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

maikoK

2021/10/25 06:00

数ある中からこの投稿にコメントいただきありがとうございます! qnoirさんの方法で解決することができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問