"Sheetsを使ってフォームの選択肢を自動入力するにはどうすればいいですか?"- Google Docs Editors Community
仕入先、商品、スタッフはGoogle Sheetsのリストにあり、フォームのプルダウンには今日時点のそのリストを表示したいはずです。Google FormsはSheetを読めません。選択肢は手で貼り付けることになり、リストが変わるたびにフォームは古くなります。Apps Scriptでコピーすることもできますが、誰かが書いて直し続けなければならず、プルダウンは相変わらず1,000個の選択肢で止まります。Formfacadeなら、シートを接続し、プルダウンを普通の英語や他の言語で説明するだけです。回答者には最新のリストが表示され、数文字入力するだけで選びたい項目を見つけられます。
以下では、リストを貼り付ける方法からSheetを接続する方法まで、Google Formsのプルダウンを埋める3つの方法と、それぞれの弱点を紹介します。
プルダウンの質問では、回答者はあらかじめ用意された選択肢のリストから1つの答えを選びます。回答者が選べる答えが1つだけという点では、ラジオボタン (複数選択) の質問と同じです。ラジオボタンと違うのは、回答者がプルダウン欄をクリックするまで選択肢が隠れていることです。フォームをコンパクトに保ちたい長いリストに向いています。
Google Formsでフォームを開き > + (質問を追加) アイコンをクリックし > 質問のタイトルを入力し > 質問のタイプとして Dropdown を選び > Add option に選択肢を入力します > 回答を必須にしたい場合は Required のトグルをオンにします。
ヒント:選択肢を1つずつ手で追加する代わりに、スプレッドシートから選択肢をコピーして最初の選択肢の欄に貼り付けることができます。Google Formsが自動で別々の選択肢に分けてくれます。
- Google Formsでは、1つのプルダウンにつき選択肢は1,000個が上限です。これより長いリストは正しく読み込まれません。
- Google Sheetから選択肢を取り込む標準の方法はありません。選択肢は手で入力するか貼り付ける必要があります。
- 選択肢の追加、削除、編集など、リストを変えるたびにフォームを開いて手で編集しなければなりません。
こうした制限を乗り越えるには、Apps ScriptまたはFormfacade - Sheets Lookupアドオンを使って、Google SheetsからGoogle Formのプルダウンに選択肢を入れられます。
Apps Scriptを使うと、Google Forms、Sheets、Drive、その他のGoogle Workspaceアプリにまたがる作業を自動化できます。シートの列を読み取り、その値でフォームのプルダウンを自動更新するスクリプトを書くことができます。たとえば、500社以上の仕入先リストがあるGoogle Sheetがあれば、手で追加しなくてもフォームの仕入先プルダウンを自動で埋められます。
- Google Formsでフォームを開き > 右上の ⋮ (3点メニュー) をクリックし > Apps Script を選びます
- Apps Scriptで Create script をクリックし > 次のスクリプトを貼り付けます。
- YOUR_FORM_ID と YOUR_SHEET_ID を、フォームとシートのURLにあるIDに置き換えます。QUESTION_TITLE は、フォームに表示されているとおりのプルダウンの質問のタイトル (大文字小文字やスペースも含めて正確に) に置き換えます。
- 変更したらスクリプトを保存し、Run をクリックして実行します。Googleから、スクリプトがフォームとシートにアクセスすることの承認を求められます。Review Permissions をクリックし、Googleアカウントを選んで Allow をクリックします。手動で実行すると、トリガーを設定する前にスクリプトが動くことも確認できます。
- 左サイドバーのトリガーアイコン (時計) をクリックし > Create a new trigger をクリックし > 開いたダイアログで実行する関数として updateDropdown を選び > イベントのソースとして Time-driven を選び > 時間ベースのトリガーのタイプとして Hour timer または Day timer を選び > 間隔として希望の頻度 (たとえば1時間ごと、1日ごと) を選んで Save をクリックします。
フォームID:Google Formsでフォームを開きます。URLの /d/ と /edit の間の文字列をコピーします。
https://docs.google.com/forms/d/FORM_ID/edit.
シートID:Google Sheetを開きます。URLの /d/ と /edit の間の文字列をコピーします。
https://docs.google.com/spreadsheets/d/SHEET_ID/edit.
- コードを書いて保守する必要があります。スクリプトは何の警告もなく動かなくなることがあり、誰かが気づいて直すまで、回答者には古い選択肢が表示されたり選択肢がなくなったりします。
- Google Formsはプルダウンに1,000を超える選択肢を表示できず、Apps Scriptでもこの上限は回避できません。
- フォームごとに専用のスクリプトとトリガーが必要です。同じシートからデータを取るフォームが複数あれば、フォームごとに同じ設定を複製して保守しなければなりません。
Formfacadeを使えば、コードなしでGoogle Sheetをフォームに接続できます。やりたいことを普通の言葉 (英語でも他の言語でも) で説明すれば、シートのデータでプルダウンを埋めてくれます。フォームはシートと自動で同期されます。
Google Formにはプルダウンの質問が、Google Sheetには選択肢のリストが必要です。
- Google Formのリンクを貼り付けて Next をクリックします。Formfacadeが質問をコピーします
- シートを選んで Next をクリックします。まだ接続していない場合は Connect a Google Sheet をクリックし、Googleのウィンドウでシートを選びます
- "How do you want to connect?" の下で、あらかじめ書かれた英語の指示を編集して Proceed をクリックします。例:「Supplier シートの名前で仕入先のプルダウンを埋める」
- Preview your form をクリックして試します
- 回答を集めるにはFormfacadeの共有リンクを使います。
プルダウンにはシートの選択肢が表示され、リストが変わっても同期されます。
- Apps Scriptは不要。スクリプトの代わりに、普通の英語の指示が1つだけ。
- 大きなリストに対応。数百、数千の選択肢も性能の上限なしで扱えます。
- 柔軟なUI。標準のプルダウンを表示することも、長いリストで検索 (オートコンプリート) を有効にすることもできます。
- シートが唯一の正しい情報源。1か所でデータを更新すれば、接続されたすべてのフォームに自動で反映されます。
- シートが変更されることはありません。Formfacadeはフォームを速く表示するためにデータを複製しており、シートへの書き込み権限は一切使いません。
- Formfacade - Sheets Lookupのサブスクリプションが必要です。
- 回答は通常どおりGoogle Formsに記録されますが、回答を集めるには、Google Formsの通常のURLではなくFormfacadeのリンクを使う必要があります。
| Apps Script | Formfacade - Sheets Lookup |
|---|
| コードが必要 | はい | いいえ |
| 自動で同期 | はい(トリガーが動けば) | はい(30分ごと、または送信ごと) |
| 1,000以上の選択肢に対応 | いいえ | はい |
| 1つのシートを複数のフォームで使用 | いいえ、フォームごとに別のスクリプト | はい |
| メンテナンスが必要 | はい | いいえ |
| 費用 | 無料 | サブスクリプションが必要 |
リストが1,000件未満で、スクリプトを書いて保守することに抵抗がなければ、Apps Scriptを使ってください。信頼できるノーコードの方法が欲しいなら、特にリストが大きい、頻繁に変わる、または複数のフォームで使う必要がある場合は、Formfacade - Sheets Lookupを使ってください。
シートに新しい行を追加するとどうなりますか?
Formfacadeでは、何もしなくてもフォームが自動で同期されます。初期設定では30分ごと、またはフォームが送信されたときに同期します。Apps Scriptでは、次にトリガーが動いたとき、スケジュールに応じて1時間ごとまたは1日ごとに更新されます。
選択肢の数に上限はありますか?
Google Formsでは、1つのプルダウンにつき選択肢は1,000個が絶対的な上限です。Apps Scriptでもこれは回避できません。Formfacadeはどんな大きさのリストも扱え、長いリストは自動で入力しながら検索できる画面に切り替わります。
1つのシートで複数のフォームのプルダウンを動かせますか?
はい。インポートする方法でもアドオンでも、同じシートを複数のフォームに接続できます。Apps Scriptでは、フォームごとに別のスクリプトとトリガーが必要です。
プルダウンに表示する選択肢を制御できますか?
はい、Formfacadeなら可能です。重複を除いて一意の値だけを表示したり、並べ替えたり、条件で絞り込んだりできます。例:「Status 列が Active の仕入先だけを表示する」
プルダウンの選択肢がGoogle Sheetにある場合、Google Formsはそれを読めないので、貼り付けたリストは古くなり、スクリプトは誰かが動かし続けなければなりません。Formfacadeなら、シートを接続してプルダウンを普通の英語で説明するだけで、リストが変わっても追従します。Formfacadeで
Google Sheetをフォームに接続 してください。ご質問があれば
サポートにご連絡ください。