応用:別のスプレッドシートから選択肢を取り込む
選択肢シートは、アドオンが読み取る唯一の場所です。A 列に選択肢、B 列に定員を入力すると、アドオンが申し込み数を C 列に書き込みます。Drive の他のものには一切触れません。
使いたいリストがすでに別のスプレッドシート(名簿、在庫表、誰か他の人が管理しているシートなど)にある場合、入力し直したりコピーしたりする必要はありません。数式で A 列をそのシートに向ければ、フォームはそれに従います。
数式
選択肢シートを開き、その質問のタブのセル A2 をクリックして、次のように入力します。
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/YOUR_SHEET_ID/edit", "Sheet1!A2:A")
URL は元となるスプレッドシートのものに、Sheet1!A2:A は選択肢が入っているタブと列に置き換えてください。元のシートに見出し行がある場合は、範囲を 2 行目から始めます。
初めて行うときは、セルに #REF! とアクセスを許可の確認が表示されます。一度クリックすれば値が現れます。この確認が表示されるのは、両方のスプレッドシートを開ける人だけです。
A1 は Options のままにしてください。アドオンはこの見出しでタブのレイアウトが保たれているかを確認しており、変更されると同期が停止します。
そのあとどうなるか
他に変わることはありません。フォームは通常のスケジュール(サイドバーを開いたとき、1 時間ごと、回答の送信ごと)で同期され、同期のたびにその時点で数式が返す値を読み取ります。元のスプレッドシートを編集すれば、新しい値が次回の同期でフォームに届きます。
定員には注意が必要
B 列の定員は、行によって選択肢に対応づけられます。B5 の数値は A5 にある選択肢に上限をかけます。
手で入力したリストは動かないので、通常の使い方ではこの点は表に出ません。数式で供給されるリストは動くことがあります。元のシートで行が挿入・削除・並べ替えされると、選択肢がずれる一方で定員はその場に留まり、間違った行に付いてしまいます。
安全を保つ方法は 2 つあります。
- 元のリストの行は、途中ではなく末尾で追加・削除する
- 並べ替えを行ったあとは、選択肢シートを開いて、各定員が正しい選択肢の隣にあるか確認する
定員をまったく使っていない場合は、以上はどれも当てはまりません。
数式が壊れたとき
アクセス権が取り消されたり、元のファイルが削除されたり、範囲が無効になったりすると、セルは #REF! や #N/A のようなエラーになります。
アドオンはそれをフォームに書き込むことはありません。同期は停止し、質問はすでに持っている選択肢を保ち、サイドバーには選択肢シートを直すよう促す同期エラーが表示されます。シートを開き、数式を直して、もう一度同期してください。
ピッカーではなく数式である理由
アドオンの中から外部のスプレッドシートに接続するということは、それらのファイルへのアクセス権をアドオンに与えるということです。さらに、選択肢シートの意味が、そこを見ているだけでは分からない設定によって 2 通りに変わってしまいます。数式であれば、1 つのルールが常に真であり続けます。Options と Capacity はあなたのもの、Taken はアドオンのもの。そしてアドオンは、フォーム用に自ら作成したもの以外のスプレッドシートを決して読み取りません。
