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

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

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

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

Google フォーム

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

Google Apps Script

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

Q&A

0回答

739閲覧

Googleフォームの選択肢をスプレッドシート管理して、さらに回答されたものは自動削除するGASについて

modd21

総合スコア1

Google スプレッドシート

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

Google フォーム

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

Google Apps Script

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

0グッド

0クリップ

投稿2023/02/28 06:47

編集2023/02/28 14:03

GASについて教えてください。

下記のサイトを参考にして
https://qiita.com/naoqoo2/items/2c96b07eb2d53d245b2f

Googleフォームのプルダウンで
既に予約が入った日時の
選択肢は消していく

というスクリプトを作成したいです。

まったく同じスクリプトでフォームIDと
スプレットシートIDを自分のものに修正し、
フォームの質問も「ご希望の日程をお選びください」
にしていますが、

試しに1つ予約を入れてみますが、
選択肢が減りません。。

どこに問題があるのでしょうか。
ご教示いただけますと幸いです。

追記:エラーは出ずに実行できますが、当該の行が削除されていない状態です。

var form_id = '1NN4s4GBpfXQdRdIknjWZtjIJ0js58JQxsQi_ovd8duw'; // フォームID var question_title = 'ご希望の日程をお選びください'; // 動的にしたい質問のタイトル var sheet_id = '1rpGbjxykoXFLQc6Gb6HXiKZ_8uTWKMqdaVkiDxouSPg'; // スプレッドシートID var sheet_name = 'シート1'; // シート名 // スプレッドシートの内容でフォームの選択項目を更新する function change_pulldown_list(){ // Googleフォームから質問データを取得 var form = FormApp.openById(form_id); var target_item; var items = form.getItems(); for(var i = 0; i < items.length; i++){ if (items[i].getTitle() === question_title) { target_item = items[i]; } } if (!target_item) { // 見つからなければ終了 return; } // スプレッドシートからデータ取得 var ss = SpreadsheetApp.openById(sheet_id); var sheet = ss.getSheetByName(sheet_name); var last_row = sheet.getLastRow(); // ※A列固定 var question_list = sheet.getRange(1, 1, last_row, 1).getDisplayValues(); // 質問の選択項目を更新 target_item.asListItem().setChoiceValues(question_list); } // フォームがsubmitされたときに回答された選択項目をフォームから削除する function trigger_submit(event){ var itemResponses = event.response.getItemResponses(); // 回答を取得 var target_value = ''; for (var i = 0; i < itemResponses.length; i++) { if (itemResponses[i].getItem().getTitle() === question_title){ var answer = itemResponses[i].getResponse(); target_value = answer; } } // 削除したくない選択肢の場合は何もしない if (target_value === '上記以外の日程で相談したい') { return; } if (target_value) { // スプレッドシートから削除して delete_row(target_value); // フォームに反映 change_pulldown_list(); } } // スプレッドシートから引数で渡された値を持つ行を削除する function delete_row(target_value){ var ss = SpreadsheetApp.openById(sheet_id); var sheet = ss.getSheetByName(sheet_name); var last_row = sheet.getLastRow(); for(var i = 1; i <= last_row; i++){ // ※A列固定 var range = ss.getRange('A' + i); var value = range.getDisplayValue(); if(value == target_value){ var start_row = i; var num_row = 1; ss.deleteRows(start_row, num_row); i = i - 1; } } }

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2023/02/28 15:39 編集

念のため確認なのですが、 ・記事では、「スプレッドシートとフォーム両方に同じスクリプトを記述せよ」となっていますが、その通りにしていますか? ・そのうえで、「フォームの方のスクリプト」で、trigger_submit 関数にトリガー(フォームの送信時)をきちんと設定していますか?
modd21

2023/03/01 00:29

ありがとうございます! はい! 両方とも設定はしておりまして、 トリガーもエラーにはなっておりません。m(__)m
退会済みユーザー

退会済みユーザー

2023/03/01 12:13

自分の環境ではできているので、なぜでしょうね。 あとアドバイスできることと言えば、forループの中やポイントになりそうなところに、console.log()を追加して実行して、期待通りに動いているか確かめる、くらいですね。 あまりお役に立てずすみません。
YellowGreen

2023/03/07 00:31

ss.deleteRows(start_row, num_row); を sheet.deleteRows(start_row, num_row); にしてみるとどうなりますか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問