作成日:2018-06-08, 更新日:2018-06-08
基本
・無理・・・というか、挫折中。下記の「案2」あたりでひとまず満足。
経緯
・チームでGoogleスプレッドシートを共有していた
・別チームにもGoogleスプレッドシートを共有する必要が出てきた
・でも、別チームには見られたくない情報がある
・・・「困った」って感じ。
最終的な希望
指定した「範囲内 or 範囲外」のみ「閲覧 or 編集」禁止(もしくは「閲覧 or 編集」許可)としたい
初期のスプレッドシート
下記のようなシートを持つ「スプレッドシート:チームA専用」ってのがあるとする。
▼「シート:串焼き」
A | B | C | D | |
---|---|---|---|---|
1 | 鳥精 | 140円 | 塩、タレ | 鳥胸 |
2 | 豚精 | 140円 | 塩、タレ | 三元豚 |
3 | 丸ごとシマウマ | 180円 | 塩、タレ | すっごくお腹が空いた人用 |
▼「シート:オーダー」
A | B | C | D | E | |
---|---|---|---|---|---|
1 | カウンター1 | 鳥精 | 1本 | 140円 | 140円 |
2 | カウンター1 | 丸ごとシマウマ | 2本 | 180円 | 360円 |
3 | テーブル3 | 豚精 | 4本 | 140円 | 560円 |
・「シート:オーダー - D列」は「vlookup()」で「シート:串焼き - B列」を取得
・「シート:オーダー - E列」は「シート:オーダー - C列とD列」から求める
チームBと共有
・「スプレッドシート:チームA専用」の「シート:串焼き」のみ共有したい
・「スプレッドシート:チームA専用」の「シート:オーダー」は共有したくない
さらに要望
・「スプレッドシート:チームA専用」の「シート:串焼き」の「列D」も共有したくない。
求めている内容
・共有したくない部分は閲覧禁止
共有したくない部分は編集禁止
「閲覧禁止」じゃなく「編集禁止」ならシートの保護でユーザーの権限指定で対応可能っぽい。
指定箇所のみ閲覧OK(案1):importrange()
「閲覧OKな部分のみ別のスプレッドシートで読み込ませる」って方法がある。
ただ、編集したりすると・・・面倒。
流れ
スプレッドシートを2つ用意。
・「スプレッドシート:チームA専用」
・「スプレッドシート:共有用」
※一つ(スプレッドシート:チームA専用)は上記のヤツ。もう一つ(スプレッドシート:共有用)は共有させるための「スプレッドシート」
▼流れ
1.「スプレッドシート:チームA専用」のURLをコピっておく(※後でも良い。「https~edit」まで)
2.「スプレッドシート:共有用」の「セル:A1」に「importrange()」で読み込み対象と範囲を指定(※詳細は後述)
3.「スプレッドシート:共有用」の「セル:A1」で共有のことを聞かれるのでOKしてあげる
4.「スプレッドシート:共有用」を別ユーザーと共有する
「importrange()」で読み込み対象と範囲を指定について
▼構文
=importrange(URL,範囲)
▼必要な情報
・「スプレッドシート:チームA専用」のURL
・「スプレッドシート:チームA専用」の共有したいシート、範囲
▼OKな指定範囲
・「シート:串焼き!A1:D999」みたいなシート名とセルの範囲
▼ダメな指定範囲
・「A:Z」みたいな列だけの指定
・「シート:串焼き」みたいなシート名だけの指定
▼記述(「スプレッドシート:共有用」の「セルA1」に下記入力)
=importrange("https://docs.google.com/spreadsheets/d/〇〇〇/edit","シート:串焼き!A1:D999")
注意
・「スプレッドシート:共有用」の「セルA1」は「=importrange()」が入力される
・「スプレッドシート:共有用」の「セルA2」や「セルB1」などは編集不可(※エラーになる)
・「スプレッドシート:チームA専用」の「セルA2」を修正すると「スプレッドシート:共有用」の「セルA2」も変更される
・範囲が「A1:D999」の場合、「スプレッドシート:共有用」の「セルE1」などの範囲外は何を入力してもOK
・「スプレッドシート:チームA専用」を並び替えると「スプレッドシート:共有用」も並びかわる。
・「スプレッドシート:共有用」を並び替えると「スプレッドシート:チームA専用」も並びかわる。
・「スプレッドシート:共有用」の「列E」に入力し、「スプレッドシート:チームA専用」を並び替えても「列E」は並びかわらない
案2
基本は「案1」。
・「案1」の「スプレッドシート:共有用」のシート名を「マスター」とする。
・「スプレッドシート:共有用」に「シート:編集用」を追加。
概要
・「スプレッドシート:チームA専用」が元データ
・「スプレッドシート:共有用」の「シート:マスター」に元データを読み込ませる
・「スプレッドシート:共有用」の「シート:編集用」に色々とデータを足してもらう
▼流れ
1.「スプレッドシート:共有用」の「シート:編集用」に「vlookup()」で「シート:マスター」を読み込ませる
2.「スプレッドシート:共有用」の「シート:マスター」を保護する。
3.「スプレッドシート:共有用」の「シート:編集用」に「vlookup()」した箇所を保護する。
コレで「スプレッドシート:共有用」の「シート:編集用」は並び替えてもOK
出来上がるシートたち
・上記では「A~D」としていたけど「A~C」の「シート:串焼き!A1:C999」を範囲とする。
・ユーザーは「管理者A」「一般B」の2人。
「スプレッドシート:チームA専用」の「シート:串焼き」
「管理者A」のスプレッドシートで共有はしない
A | B | C | D | |
---|---|---|---|---|
1 | 鳥精 | 140円 | 塩、タレ | 鳥胸 |
2 | 豚精 | 140円 | 塩、タレ | 三元豚 |
3 | 丸ごとシマウマ | 180円 | 塩、タレ | すっごくお腹が空いた人用 |
「スプレッドシート:共有用」の「シート:マスター」
シート自体を保護(編集不可にする)→「一般B」は「シート:マスター」の編集不可(閲覧のみOK)
▼「セルA1」に記載
=importrange("https://docs.google.com/spreadsheets/d/〇〇〇/edit","シート:串焼き!A1:C999")
A | B | C | D | |
---|---|---|---|---|
1 | 鳥精 | 140円 | 塩、タレ | |
2 | 豚精 | 140円 | 塩、タレ | |
3 | 丸ごとシマウマ | 180円 | 塩、タレ |
※「スプレッドシート:共有用」は「一般B」と共有
「スプレッドシート:共有用」の「シート:編集用」
列A~Dを保護(編集不可にする)→「一般B」は「列A~D」の編集不可(閲覧のみOK)
・列Aには文字(鳥精、豚精、丸ごとシマウマ)を入力
・列B~Cは「シート:マスター」からvlookup()でデータを取ってくる
※列B~Cにあらかじめvlookup()を入れとくなら列Aの保護を解除するのも良いと思う。
A | B | C | D | |
---|---|---|---|---|
1 | 鳥精 | 140円 | 塩、タレ | hoge |
2 | 豚精 | 140円 | 塩、タレ | foo |
3 | 丸ごとシマウマ | 180円 | 塩、タレ | bar |
※「スプレッドシート:共有用」は「一般B」と共有
・列D以降は好きかって入力してもらう→「一般B」が色々入力できる
・このシートで並び替えを行っても「スプレッドシート:チームA専用」の「シート:串焼き」に影響は出ない(個人用のフィルタが自動で反映してくれる)
案3
「案2」でひとまずOKなので・・・他にもっと楽な方法があるかもしれないけど・・・挫折中。