【やりたいこと】
Googleスプレッドシートから取得したセルの値を元に、Googleフォームの質問項目となる選択肢に追加させたいと考えております。
以下、構文ではGoogleフォームに対して、スプレッドシートから項目を取得後、新たに質問を追加させる事は出来ました。
しかし、これで完成という訳ではなく、いくつか解決させたい問題があります。 解決させたい問題については、以下構文最後に付け加えさせていただきます。 なお、以下GoogleAppScriptの構文はスプレッドシート内のスクリプトエディタにて実行させております。
【参考コード】
GoogleAppScript
1function getCategory() { 2 var mspid = "スプレッドシートのファイルID"; //スプレッドシートのID 3 var ss = SpreadsheetApp.openById(mspid); 4 var sheets = ss.getSheets(); 5 var mst = sheets[0]; 6 7 var dt = mst.getSheetValues(startRow, startColumn, numRows, numColumns); 8 9 var frmid = "フォームのファイルID"; //フォームのID 10 var frm = FormApp.openById(frmid); 11 var qui = frm.addListItem() 12 .setTitle('ラベル名'); 13 14 var choices = [] 15 for (var i = 0; i < dt.length; i++){ 16 choices.push(qui.createChoice(dt[i][0])); 17 } 18 qui.setChoices(choices); 19}
【解決させたい問題】
1.スプレッドシートより参照する質問の値は、毎日変化する為、トリガーを毎日1時に実行させる事によって、Googleフォームへと表示される質問の値は常に最新の状態へと切り替えたいと考えております。
しかし、上記構文をトリガーによって毎日実行すると、当然ながらGoogleフォームへと表示される質問の値は変わりますが、古い質問の選択肢は残ったままになって、最新の質問だけがトリガーを実行される度、無限に追加される事になってしまいます。
以下の選択肢となる値が、毎日変化してスプレッドシートの同セル内へと表示されている状態となります。
トリガーを実行1回目→選択肢 a1 a2 a3 a4 a5
トリガーを実行2回目→選択肢 b1 b2 b3 b4 b5
トリガーを実行3回目→選択肢 c1 c2 c3 c4 c5
トリガーを実行4回目→選択肢 d1 d2 d3 d4 d5
質問が追加される事なく、常に最新の値をGoogleスプレッドシートから取得してGoogleフォームの質問の選択肢の欄へと追加させたいのが、解決へと至りたい問題その1となります。
2.セクションが複数あった場合、上記の構文を実行すると、質問は一番下位のセクションへと追加される事になりますが、指定のセクションへと追加させる方法を実現させたいと考えております。
Googleフォームのセクションが4つあったとしまして、質問を追加させたいセクションは2つめのセクションが解決へと至りたい問題その2となります。
長文での質問となって、たいへん実現したい事がわかりにくい事かもしれませんが、ご教示いただければ幸いです。
宜しくお願いいたします。
また、まずは上記構文を自分と同じくスプレッドシートのスクリプトエディタへと書き込んで実際に実行してみると質問の意味を分かっていただけるかもしれません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。