Google スプレッドシートでは、ワークシート、列、行の編集に関して、ユーザーごとに詳細なルールを設定できます。しかし残念ながら、読み取りアクセスを制限する機能はありません。これは、例えば顧客には関連するチケットのみを表示したり、従業員には自分が担当しているプロジェクトのみを表示したりするなど、多くの場面で非常に役立ちます。
一つの解決策として、いわゆるマスターシートを作成し、 IMPORTRANGE関数を使ってそこから選択したデータに一方向からアクセスする方法が考えられます。しかし、この方法には多くの手作業が伴います。具体的には、新しいシートの作成、ファイル権限の割り当て、IMPORTRANGE関数の開発と実装、権限の承認、書式設定などです。構造や書式が変更された場合は、各スプレッドシートごとに個別に手動で変更する必要があります。
次のGoogleAppsスクリプトはこれを自動的に行います。 マスターシートでinit()メソッドを1回実行すると、すべてのスレーブシートが自動的に作成され、権限が割り当てられ、式とフォーマットが設定されます。 マスターシートのデータが変更されると、スレーブシートに自動的にミラーリングされます。 マスターシートの構造が変わった場合は、 init()を再度実行してください(前のシートは自動的に更新されます)。
82ba709df04366e65cb3a42f84f19631