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

コピペでできるGAS

Googleフォーム関連

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

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

前回

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

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

 

 

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

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

 


これを知ることであなたは、
Googleフォームのプルダウンの項目を

  • スプレッドシートから読み込んで追加することができます。
  • GASって何?状態であってもコピペでできます。


逆に、知らないと

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

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

と言ってあげてください

動画はこちら

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の以下の部分をコピーし置換します。

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 より:

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

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