Googleフォーム プルダウン(ドロップダウン)リストの項目をスプレッドシートから読み込んで追加する方法

Googleフォーム

Googleフォーム関連

ご訪問ありがとうございます。

Googleシートマスターのひろしです。

前回

Googleフォームのデザインを自由に変更する方法「上級者向け」
あなたが今まで使っていたフォームのデザインでGoogleフォームが使用できます。

今回は、とっても価値の高い方法をお伝えします。

 

 


これを知ることであなたは、

  • Googleフォームのプルダウンの項目をスプレッドシートから読み込んで、追加することができます。
  • GASって何?状態であってもコピペでできます。


逆に、知らないと

Googleフォームのプルダウンに
たくさん項目を追加する際に、チンタラチンタラ1項目づつ、
手作業で追加する状態が続きます。

なので、サクッとマスターして

と言ってあげてください

 

 

 

最新版(『名前付き範囲』で読み込む方法)はこちら↓

Googleフォームにスプレッドシートから項目を追加する方法(コピペでできる!)
  • 手軽にスプレッドシートからGoogleフォームに項目を追加できるようになります。
  • GASって何?状態であってもコピペでできます。
  • ボタンからGASを呼び出す方法がわかります。
  •  

     

    動画はこちら

    Googleフォーム スプレッドシートからプルダウンの項目を読み込む方法

    サンプルシート


    ※クリックするとシートが開きます。

     

    スクリプト

    const FORMID = '******************************************'   //① GoogleフォームのID
    const ITEMNAME = '項目名'                                      //② 項目のタイトル
    const SHEETNAME = 'シート1'                                    //③ 読み込むシート名
    
    
    /**
     * Googleフォームのプルダウンリストに項目を追加する
     */
    function AddGoogleFormsListItem() {
      const form = FormApp.openById(FORMID)
      const items = form.getItems()
    
      const section = choiceValues()
      console.log(section)
    
      //デバック用Google Formsの質問名と、IDを取得
      for (let i = 0; i < items.length; i++) {
    
        const item = items[i]
        const itemName = item.getTitle()
        const itemId = item.getId()
    
        console.log(`質問名 ${itemName}, \n質問のID ${itemId}`)
    
        //スプレッドシートのシェアハウスDBから内容を読み取って、Formの項目を更新する。
        if (itemName == ITEMNAME) {
          items[i].asListItem().setChoiceValues(section)
        }//if
      }//for
    }//end
    
    
    //Googleシートから、プルダウンリストの選択肢を取得する
    function choiceValues() {
      const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEETNAME)
      const lastRow = sheet.getLastRow()
      const values = sheet.getRange(1, 1, lastRow, 1).getValues()
      values.shift()
    
      return values
    }
    

     

    上記シートの上から3行、GoogleフォームのID、項目のタイトル、読み込むシート名を
    あなたの環境に合わせて変更してください。

     

    スクリプトの変更する項目

    ①フォームID

    フォームを開いたときのURLの以下の部分をコピーし******************************************の部分を置換(貼り付け)します。https://docs.google.com/forms/d/1ljV5KSoIEXXXXRAW9AK8aj0i_WFic1SNK5G3rgygvs8/edit

     

     

    ②項目名

    プルダウンの項目名を置換します。

     

    ③シート名

    選択肢を記載したシート名を置換します。

    *シートの1行目は読み込みません。

     

    マインドセットします。

    マインドセット
    プルダウンに5個以上項目がある場合は、スプレッドシートから読み込め

     

     

    では、今回のGoogleシートマスターへの究極の方法です。

    Step1.
    Googleフォームを開く

    Step2.

    プルダウンの項目を追加する

    Step3.

    サンプルシートをコピーして開く

    Step4.

    スクリプトを貼り付ける

    Step5.

    GoogleフォームのID、項目名、シート名をコピペし動作を確認する

    では、早速Googleフォームを開いてください
    今すぐです。

    最後までご覧いただきありがとうございます。

    つぎはこちら

    Googleフォームにスプレッドシートから項目を追加する方法(コピペでできる!)
  • 手軽にスプレッドシートからGoogleフォームに項目を追加できるようになります。
  • GASって何?状態であってもコピペでできます。
  • ボタンからGASを呼び出す方法がわかります。
  • Googleフォーム関連

    コメント

    1. shou より:

      とてもわかりやすく勉強になります。
      超初心者ですが、コードをコピペしてスプレッドシートから項目を追加することができました。

      1つ質問なのですが、プルダウンの「回答に応じてセクションに移動」についても同様にスプレッドシートから追加することは可能でしょうか?

      • hiroshi より:

        可能ですが、その仕組をスプレッドシート上に作るのは、
        ちょっと頑張る必要があります。

    2. kazu より:

      大変わかりやすくて助かりました。ありがとうございます。

      あまりにも初心者で聞くのが恥ずかしいのですが、例えば1つのスプレッドシートを使って複数のフォームに反映させたい場合はどういう風になるのでしょうか。

      • hiroshi より:

        フォームの内容によりますが、いちばん簡単なのは、

        かっこ悪いですが、AddGoogleFormsListItem()関数を
        そのままコピペして
        newmain(){
        AddGoogleFormsListItem()
        AddGoogleFormsListItem2()
        }
        とやれば実現できます。

        実際には、AddGoogleFormsListItem(FORMID)とかやりたいところですが、
        その辺は中身によりますね。

        実際のフォームをご提供いただければ、もう少しクリティカルな回答ができるかもしれません。

    3. テツ より:

      1つのフォームで、複数の質問があり、その複数の質問でそれぞれプルダウンにする場合はスクリプトはどこか触る必要があるのでしょうか。
      初心者で教えていただけませんでしょうか。

    4. 匿名 より:

      大変ありがたい記事で、参考にさせていただきました。
      ですが自分でやったところ、スクリプトエディタで次のようなエラーが表示されてしまいました。

      エラー
      TypeError: Cannot read properties of null (reading ‘getSheetByName’)
      choiceValues @ コード.gs:35
      AddGoogleFormsListItem @ コード.gs:13

      この場合、どのように対処したら良いでしょうか。ご教示願えますと幸いです。よろしくお願いします。

      • hiroshi より:

        一度もうまく行っていないのであれば、まず動画と同じシート名や項目名で
        動画をゆっくり見ながらまったく同じ状態でやってみてください。

    5. 030 より:

      こちらのフォームに取り込む方法をたくさん活用させていただき、大変助かっております。
      今日もいつものように取り込もうとしたところ、「コード.gs:27」というエラーが出てしまい、実行できませんでした。対処法を教えていただけると幸いです。

    6. tot より:

      いつも分かりやすい解説ありがとうございます。
      日付(1月1日形式)のプルダウンリストを作りたいと思い参考にさせて頂いたのですが、スプレッドシート側は、1月1日となってますが、フォームのリストは、Mon Jan 01 2024 00:00:00 GMT+0900 (Japan Standard Time)となってしまいます。
      日付リストを1月1日形式で表示させる場合、また、何らかしらの設定が必要になりますか?

      • hiroshi より:

        スプレッドシート側の値をシリアル値で受け取るからですね。
        なので文字列として表示させる必要があります。いかのいずれかで実現できると思います。
        a.文字列で入力する
        b.TEXT関数を使って表示させる
        c.getValues()をgetDisplayValues()に置き換えてみる

        参考
        https://technical.verybestcbp.com/gasdocfromspdsp/

    タイトルとURLをコピーしました