Googleスプレッドシートを複数人で共有していると、特定のセル範囲だけ編集させたい、あるいは重要な列を誤って変更されたくないと感じることはありませんか。ファイル全体を編集不可にしてしまうと、他の人が必要な箇所を変更できず不便です。本記事では、範囲ごとに異なる権限を割り当てる方法を詳しく説明します。保護範囲の設定とApps Scriptを使った高度な制御の2つの手法を紹介しますので、目的に合わせて使い分けられます。
【要点】範囲ごとの権限設定で安全な共同編集を実現
- 保護範囲の設定: 特定のセル範囲をロックして、編集できるユーザーだけに権限を与えます。
- Apps ScriptのsetProtections: スクリプトで動的に保護範囲を作成し、グループごとに異なる権限を割り当てられます。
- 条件付き保護: 特定の条件(日付やステータスなど)に応じて保護範囲を自動制御する方法も解説します。
ADVERTISEMENT
目次
Googleスプレッドシートの権限設定の基本
Googleスプレッドシートでは、ファイル全体の共有権限(閲覧・編集・コメント)とは別に、シート内の特定の範囲に追加の制限をかけられます。これを「保護範囲」と呼びます。保護範囲を設定すると、その範囲を編集できるユーザーを個別に指定できるため、例えば「A列は全員編集不可、B列は特定のメンバーのみ編集可」といった細かい制御が可能です。権限はファイルの共有設定で編集権限があるユーザーに対してのみ機能します。つまり、保護範囲の設定は編集権限を持つユーザーの中でさらに制限をかける仕組みです。
また、より複雑な権限制御を行いたい場合は、Google Apps Script(GAS)を使用します。スクリプトを使えば、シートの状態やユーザー情報に応じて動的に保護範囲を変更したり、特定の条件で一時的に制限を解除したりできます。本記事では、初心者向けの保護範囲設定から、応用としてのスクリプト制御までを順に解説します。
保護範囲を使ってセル単位で権限を設定する手順
まずは最も簡単な方法である「保護範囲」の設定手順を説明します。この方法では、シート上の任意の範囲をロックし、編集を許可するユーザーを指定できます。
- 保護したい範囲を選択する
シート上でロックしたいセルや列・行をドラッグして選択します。複数の範囲を同時に選択する場合はCtrlキーを押しながら選択します。 - 「データ」メニューから「保護範囲」を開く
画面上部のメニューから「データ」→「保護範囲」をクリックします。またはシートを右クリックして「その他の操作」→「保護範囲」からもアクセスできます。 - 保護範囲の名前と範囲を確認する
右側に表示されるパネルで、保護する範囲が正しいか確認します。範囲は後から変更できます。 - 権限を設定する
「権限を設定」をクリックし、ドロップダウンから「特定のユーザーを除くすべてのユーザー」または「自分のみ」を選択します。編集を許可したいユーザーのメールアドレスを追加します。 - 設定を保存する
「完了」をクリックすると、設定が反映されます。保護された範囲は灰色の斜線で表示され、許可されていないユーザーが編集しようとすると警告が表示されます。
この方法で、複数の範囲にそれぞれ異なる権限を設定することも可能です。例えば、Sheet1のA1:C10は編集不可、D1:F10は特定のユーザーのみ編集可、といった運用が簡単に行えます。ただし、保護範囲の数には制限があります(シートあたり100個まで)。
保護範囲の設定例:売上管理表でセル単位の権限を分ける
実際の業務でよくあるケースとして、売上管理表を例に説明します。表には「売上金額」の列と「担当者名」の列があり、営業部のメンバーには担当者名の編集を許可し、金額の列は管理者のみ編集可能にしたいとします。
- 売上金額の列(例:C列全体)を選択
列ヘッダーをクリックしてC列を選択します。 - 保護範囲を設定
「データ」→「保護範囲」を開き、権限で「自分のみ」を選択します。これで自分だけがC列を編集できます。 - 担当者名の列(例:B列)に別の保護範囲を設定
同様にB列を選択し、権限で「特定のユーザー」を選び、営業部メンバーのメールアドレスを追加します。
これで、営業部メンバーはB列のみ編集可能、C列は自分(管理者)だけが編集できる状態になります。ファイル全体の共有設定で「編集者」権限を与えられているすべてのユーザーは、保護範囲の制限を受けます。
Apps Scriptで動的な権限制御を行う手順
保護範囲の設定はシンプルですが、ユーザー数が多い場合や、毎回手動で設定するのが手間な場合には、Google Apps Scriptを利用すると効率的です。スクリプトを使えば、シートの初期化時や特定のトリガーで自動的に保護範囲を作成できます。ここでは、特定のグループ(例:編集者グループ)に対してのみ編集を許可する範囲を、スクリプトで作成する方法を説明します。
- Apps Scriptエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」をクリックします。 - スクリプトコードを記述する
以下のコードをコピーして貼り付けます。
function setProtections() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('シート1');
// 保護範囲1: A1:C10(全員編集不可)
var range1 = sheet.getRange('A1:C10');
var protection1 = range1.protect().setDescription('管理範囲');
protection1.removeEditors(protection1.getEditors());
// 特定ユーザーを追加(例:admin@example.com)
protection1.addEditor('admin@example.com');
// 保護範囲2: D1:F10(特定グループのみ編集可)
var range2 = sheet.getRange('D1:F10');
var protection2 = range2.protect().setDescription('営業部範囲');
protection2.removeEditors(protection2.getEditors());
var groupEmail = 'sales@example.com'; // Googleグループのメールアドレス
protection2.addEditor(groupEmail);
}
このコードでは、シート1のA1:C10を管理者のみ編集可に、D1:F10を特定のGoogleグループのみ編集可に設定しています。グループを使用することで、個別のメールアドレスを追加する手間が省けます。
- スクリプトを実行する
エディタ上部の実行ボタン(▶)をクリックします。初回は権限の承認が必要です。「権限を確認」→「許可」をクリックします。 - 自動実行のトリガーを設定する(オプション)
定期的に保護範囲を更新したい場合は、時限トリガーを設定します。エディタの左側の「トリガー」アイコンをクリックし、「トリガーを追加」で「時間主導型」を選択し、例えば「1時間おき」に設定します。
Apps Scriptを使うことで、シートが開かれたときや編集されたときなど、イベントに応じて動的に権限を変更することも可能です。例えば、特定のセルに「承認」と入力されたら保護範囲を解除する、といった高度な制御が行えます。
ADVERTISEMENT
保護範囲設定の注意点とトラブル対応
保護範囲が意図した通りに動作しない
保護範囲を設定しても、編集権限を持つユーザーが範囲を編集できてしまう場合があります。考えられる原因は以下の通りです。
- 保護範囲の権限設定で「自分のみ」を選んだが、自分以外が編集できてしまう
ファイルの共有設定で自分以外のユーザーが「編集者」になっている場合、そのユーザーは保護範囲の対象外になっている可能性があります。保護範囲の権限で「特定のユーザー」を選び、編集を許可するユーザーを明示的に指定し直してください。 - 範囲が正しく選択されていない
保護範囲が行や列全体ではなく、一部のセルだけが選択されていないか確認します。保護範囲パネルで範囲のプレビューをご確認ください。 - 他の保護範囲と重複している
同じ範囲に複数の保護範囲が設定されていると、最も制限の少ない設定が優先されます。重複を避けるか、設定を見直してください。
保護範囲の制限に引っかかる
Googleスプレッドシートの保護範囲には以下の制限があります。
- シートあたり最大100個の保護範囲
- 1つの保護範囲に追加できる編集者は100人まで
- 保護範囲はシート内でのみ機能し、別のシートにまたがることはできません
- Apps Scriptで保護範囲を作成する場合、1回の実行で作成できる保護範囲の数に制限はありませんが、GoogleのAPI割り当てに注意してください
大量の保護範囲が必要な場合は、シートを分割するか、スクリプトで一括管理することをおすすめします。
グループメールを使う際の注意
保護範囲の編集者としてGoogleグループ(例:sales@example.com)を追加する場合、そのグループが「編集者」としてファイルの共有設定に含まれている必要があります。グループ自体にファイルの編集権限がないと、保護範囲の設定はできても実際に編集できません。また、グループのメンバー変更は自動的に反映されますが、反映までに時間がかかることがあります。
保護範囲とApps Scriptの比較
| 項目 | 保護範囲 | Apps Script |
|---|---|---|
| 設定の手軽さ | GUIで簡単に設定可能 | コード記述が必要でやや複雑 |
| 動的な制御 | 手動での変更のみ | トリガーや条件に応じて自動変更可能 |
| ユーザー管理 | 個別のメールアドレスまたはGoogleグループ | メールアドレス、グループ、ドメインなど柔軟に指定可能 |
| 制限 | シートあたり100個まで | API割り当てに依存(1日あたりの実行回数制限あり) |
| 適した用途 | 小規模・固定的な権限制御 | 大規模・複雑なルールが必要な場合 |
まとめ
本記事では、Googleスプレッドシートで範囲ごとに異なる権限を割り当てる方法を解説しました。保護範囲を使えば、簡単な操作でセル単位のアクセス制御が可能です。より高度な制御が必要な場合は、Apps Scriptを活用することで、動的かつ自動化された権限管理を実現できます。まずは保護範囲を試してみて、運用に応じてスクリプトに移行するのがおすすめです。また、Googleグループと組み合わせると、チーム全体の権限管理が効率的になります。これらの方法を活用して、安全で効率的な共同編集環境を整えてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
