「編集しようとしたら保護がかかっていて何もできない…」「ゴミ箱アイコンが押せない…」「自分がオーナーなのになぜか解除できない…」——そんな経験、きっとあなたにもありますよね。チームで共有しているGoogleスプレッドシートの保護設定は、データを守るためには欠かせない機能です。でも、いざ解除しようとしたら全く手が出せなくて、仕事が止まってしまった経験は誰にでも起こりえます。
この記事では、スプレッドシートの保護シートがどうしても解除できない理由を原因別に丁寧に解説したうえで、初心者でもすぐに実践できる解決策から、Google Apps Script(GAS)を使った上級者向けの自動化テクニックまで、徹底的に網羅しています。
- 保護シートが解除できない原因のパターンを完全網羅して解説。
- オーナー不在・Excel形式・権限不足など、ケース別の対処法を具体的に紹介。
- GASを使った保護の一括解除など、上級者向けの応用テクニックも掲載。
- そもそもGoogleスプレッドシートの保護とは何か?基本を理解しよう
- 保護シートが解除できない!原因は必ずこの5パターンのどれかだ
- 自分がオーナーなのに保護シートを解除できる正しい手順
- オーナーでない場合や権限がない時の「禁じ手ではない」回避策
- 上級者向け!GASを使って保護を一括解除する方法
- 保護の「解除」ではなく「調整」で対応する賢い考え方
- 情シス10年超の現場でリアルに遭遇した保護解除トラブルと解決策
- 現場でよく起きる「え、これってどうすればいいの?」問題の具体的な解決方法
- Google Workspace管理者だからこそできる「奥の手」の保護解除方法
- 「これ知らなかった!」と思うGASの実践的な保護テクニック集
- 保護設定の「運用ルール」を決めておかないと後悔する理由
- ぶっちゃけこうした方がいい!
- スプレッドシートの保護シートが解除できない問題に関するよくある疑問
- 今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
- まとめ
そもそもGoogleスプレッドシートの保護とは何か?基本を理解しよう
Googleスプレッドシートの保護機能とは、特定のシートやセル範囲を誰が編集できるかを制限するための仕組みです。複数人で同じファイルを共同編集する場面では、誰かが誤って大事な数式や集計データを書き換えてしまうリスクがあります。保護機能を使えば、そういった事故を未然に防ぐことができるのです。
保護の種類は大きく2つあります。一つはシート全体を保護する「シート保護」で、シートのタブに鍵のアイコンが表示されます。もう一つは特定のセル範囲だけを保護する「範囲保護」で、保護されたセルをクリックすると「保護されたセルまたはオブジェクトを編集しようとしています」というメッセージが表示されます。
ここで重要なのが、Googleスプレッドシートの保護は完全なセキュリティ対策ではないという点です。Googleの公式ヘルプでも「セキュリティ対策として使用しないでください」と明記されており、閲覧権限があるユーザーはコピーや印刷、エクスポートが可能なままです。保護機能はあくまで「誤操作防止」のための機能として捉えておきましょう。
また、Excelのようなパスワードによる保護は、Googleスプレッドシートには存在しません。過去には英語版のみパスワード機能が一時的に存在しましたが、現在はアップデートによって廃止されています。Google Apps Script(GAS)を使えば疑似的なパスワード機能を実装することも技術的には可能ですが、難易度が非常に高く一般的な方法とは言えません。
保護シートが解除できない!原因は必ずこの5パターンのどれかだ
保護シートが解除できない時、その原因は基本的に5つのパターンに絞られます。自分がどのパターンに該当するかを最初に把握するだけで、解決策への最短ルートが見えてきます。
パターン1自分がオーナーでも保護設定者でもない
最も多いケースがこれです。Googleスプレッドシートの保護設定は、その保護を作成したユーザーか、ファイルのオーナーにしか解除できません。たとえ編集者として共有されていても、他のユーザーが設定した保護は解除できないのです。
「自分は編集者として追加されているのに、なぜゴミ箱アイコンが出ないんだろう?」と感じたら、まずこのパターンを疑ってください。解決策は、保護を設定したオーナーに直接連絡して解除または権限付与をお願いするか、後述する「ファイルのコピー」という裏技を使うかのどちらかです。
パターン2ファイルがExcel形式(.xlsx)のまま
これは意外と見落としがちな盲点です。ExcelファイルをそのままGoogleドライブにアップロードして開いた場合、URLバーに「.xlsx」という拡張子が含まれていれば、それはExcel形式での編集モードになっています。
Excel形式のまま編集しているときは、Googleスプレッドシートの保護機能(「シートと範囲を保護」のメニュー)が表示されません。これが原因で「メニューが見つからない」「操作できない」という状況になります。解決するには、メニューの「ファイル」から「Googleスプレッドシートに変換」を選んでファイル形式を変換するだけでOKです。変換後はスプレッドシートとして再保存されるため、保護機能も正常に使えるようになります。
パターン3オーナーが退職・アカウント削除などで不在になっている
職場でよく起きる困ったケースです。前任の担当者が退職したり、アカウントが削除されたりしてオーナー自体が不在になっている場合、原則として保護の解除は誰もできません。
ただし、Google Workspaceを企業や学校で利用している場合は別の解決策があります。管理者(Google Workspace管理者)に相談することで、管理者権限を使ってオーナー権限の移譲や保護の解除が可能な場合があります。まずは自社のIT担当者や管理者に連絡することをおすすめします。
個人のGmailアカウントで作成したファイルの場合、管理者権限での対応は難しいのが現実です。その場合は後述する「ファイルをコピーして自分がオーナーになる」方法が最善策になります。
パターン4複数の保護設定が重複・干渉している
一つのシートに複数の保護設定が重なっている場合、片方を解除しても別の保護が残っているため「まだ編集できない」という状況が生まれます。特に長期間にわたって複数のメンバーが管理してきたファイルでは、保護設定が積み重なってカオスになっていることがあります。
「データ」→「シートと範囲を保護」のサイドパネルに表示される一覧をすべて確認してみてください。複数の保護設定が表示されているはずなので、解除が必要なものをすべて選択してゴミ箱アイコンをクリックして削除しましょう。
パターン5モバイルアプリから操作しようとしている
スマートフォンのGoogleスプレッドシートアプリから保護の設定や解除をしようとしているケースです。モバイルアプリでは保護の新規設定・解除が一切できません。保護されたセルを編集しようとするとメッセージが表示されますが、保護の管理はPCのブラウザからのみ可能です。
外出先でどうしても操作が必要な場合は、スマートフォンのブラウザでPCサイトを表示する方法もありますが、画面が小さく操作が困難なため、基本的にはパソコンから作業することを強くおすすめします。
自分がオーナーなのに保護シートを解除できる正しい手順
自分がスプレッドシートのオーナーであれば、保護の解除はシンプルな操作で行えます。手順を確認しても「できない」という場合は、手順の間違いやファイル形式の問題が考えられますので、一つずつ確認しながら進めてみましょう。
シート全体の保護を解除する手順
まず上部メニューの「データ」をクリックし、表示されたメニューから「シートと範囲を保護」を選択します。画面右側にサイドパネルが開きます。
- 画面上部の「データ」をクリックする。
- 「シートと範囲を保護」を選択してサイドパネルを開く。
- 新規設定画面が表示された場合は、「キャンセル」をクリックして保護設定の一覧を表示させる。
- 解除したい保護設定をクリックして選択する(シート名や説明が表示されている)。
- 設定の右側にある「ゴミ箱アイコン(範囲またはシートの保護を削除します)」をクリックする。
- 「この保護されている範囲を削除してもよろしいですか?」というダイアログが表示されるので「削除」をクリックして完了。
なお、シートタブを右クリックして「シートを保護」からアクセスする方法、または「ツール」メニューから「シートを保護」を選ぶ方法でも同じサイドパネルを開けます。どのルートからアクセスしても操作は同じです。
セル範囲の保護を解除する手順
セル範囲の保護解除も基本的にはシート保護と同じ手順です。「データ」→「シートと範囲を保護」でサイドパネルを開き、一覧から解除したいセル範囲の保護設定をクリックして選択し、ゴミ箱アイコンをクリックして削除します。
セル範囲の保護設定には説明文(メモ)が付いている場合が多いので、どの保護設定がどの範囲に対応しているかを確認したい場合は、「表示」→「表示」→「保護されている範囲」をクリックすると、保護されているセルに網掛けが表示されて視覚的に確認できます。これは保護設定を整理する際にとても便利な機能です。
完全には解除せず権限を変更する方法
保護を完全に削除するのではなく、特定のメンバーだけが編集できるように権限を変更する方法もあります。サイドパネルで保護設定を選択したら、ゴミ箱アイコンではなく「権限を変更」ボタンをクリックします。表示されたダイアログで「カスタム」を選択し、編集を許可するユーザーのチェックボックスをオンにして「完了」をクリックするだけです。
これにより、全員に解除するのではなく信頼できるメンバーだけに編集権限を付与しながら、他のメンバーへの保護は維持できます。チームで運用しているスプレッドシートでは、この方法が最もバランスの取れた対応です。
オーナーでない場合や権限がない時の「禁じ手ではない」回避策
自分がオーナーではなく、直接保護を解除できない状況でもデータを編集したい場合、実はいくつかの合法的な回避策があります。
ファイルをコピーして自分がオーナーになる方法
これはGoogleスプレッドシートの仕様を正しく理解したうえで使える最も簡単な回避策です。ファイルをコピーすると、コピーされた新しいファイルのオーナーは自分になります。そしてコピー時には保護設定が引き継がれないため、コピー後のファイルではすべてのセルが自由に編集できます。
手順は簡単で、メニューの「ファイル」から「コピーを作成」を選択するだけです。ファイル名と保存先を設定してコピーが完了すると、新しいタブで保護のない完全に編集可能なスプレッドシートが開きます。
ただし重要な注意点として、このコピーは「その時点のスナップショット」です。元のファイルが後から更新されても、コピーには反映されません。チームで使用しているデータを自分の分析用に使いたい場合など、元のファイルを変更する必要がない場面でこそ有効な方法です。
また、
=IMPORTRANGE()
などの関数で他のスプレッドシートのデータを参照している場合、コピー後にそのリンクが切れる可能性があります。コピーを作成したら、まずリンク切れがないか確認しましょう。
オーナーに編集権限をリクエストする方法
保護されたセルを編集しようとすると表示されるメッセージには、権限をリクエストするためのボタンが用意されています。「閲覧のみ」と表示されている場合は、その横の「編集権限をリクエスト」ボタンをクリックするとオーナーにリクエストが送信されます。任意でメッセージを入力して「送信」をクリックすれば、オーナーのGmailに通知が届き、許可されれば編集できるようになります。
最もスマートな方法は、メールやSlack・チャットツールなどでオーナーに直接連絡し、具体的にどのセル範囲の保護を解除または権限付与してほしいかを明確に伝えることです。「D5からD12のセルを編集させてください」のように具体的に伝えることで、オーナー側も迅速に対応しやすくなります。
上級者向け!GASを使って保護を一括解除する方法
シートに大量の保護設定が存在している場合、一つひとつ手動でゴミ箱アイコンをクリックするのはかなりの手間です。そんな時はGoogle Apps Script(GAS)を使えば、すべての保護設定を一括で解除することができます。
GASを使うにはメニューの「拡張機能」から「Apps Script」を選択してスクリプトエディタを開きます。以下のコードを貼り付けて実行(▶ボタン)するだけで、そのスプレッドシート内の全保護設定が削除されます。
function removeAllProtections() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
sheets.forEach(function(sheet) {
var protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
protections.forEach(function(p) { p.remove(); });
var sheetProtections = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
sheetProtections.forEach(function(p) { p.remove(); });
});
}
重要なのは、このスクリプトはオーナー権限を持つアカウントで実行する必要があります。編集者権限のアカウントで実行しても「保護されたセルを編集しようとしています」というエラーが出て処理が止まります。また、このコードはすべての保護設定を無条件に削除します。残しておきたい保護がある場合は必ず事前にバックアップを取ってから実行してください。
特定のシートの保護だけを残して、特定のセル範囲の保護だけを解除したい場合は、
ProtectionType.RANGE
の部分のみを処理対象にするか、条件を追加してより細かく制御することもできます。GASに慣れてきたら、保護設定の名前や範囲を確認しながら選択的に解除するスクリプトに発展させることで、より安全な管理が可能になります。
なお、複数のスプレッドシートにまたがって保護権限を一括管理したい場合は、GASラボなどが提供するサードパーティツールの活用も選択肢の一つです。スプレッドシートのURLを指定してメールアドレスを登録するだけで、複数ファイルの保護権限を一括で付与・削除できるツールが存在しています。
保護の「解除」ではなく「調整」で対応する賢い考え方
保護を完全に解除することが常に正解とは限りません。大切なのは、誰が何を編集できるべきかを整理し直すことです。
たとえば「合計欄の数式だけは保護したいが、入力欄は全員が編集できるようにしたい」という場合、シート全体を保護したうえで「特定のセルを除く」にチェックを入れ、入力可能なセル範囲を指定する方法が有効です。この方法で、重要な数式やヘッダー行を守りながら、必要な箇所だけ編集を許可できます。
また、「この範囲を編集するときに警告を表示する」モードを使うという選択肢もあります。このモードに設定すると、セルを変更しようとした際に確認ダイアログが表示されます。編集自体は可能ですが「本当に変更してよいですか?」という確認を挟むことで、誤操作を減らせます。ただし、Enterキーを連打すると突破できてしまうため、防御力は高くありません。誤操作防止の「念押し」程度に考えておきましょう。
チームで適切な保護設定を維持するためには、保護設定に説明文(コメント)をしっかり入力しておく習慣が大切です。「誰がいつ何のために設定したか」が分かるようにしておくだけで、後から誰が見ても迷わず対応できます。保護設定の変更履歴はスプレッドシートの変更履歴にも記録されるため、後から確認することも可能です。
情シス10年超の現場でリアルに遭遇した保護解除トラブルと解決策
IT部門やGoogle Workspace管理者として10年以上の実務経験を積んでいると、スプレッドシートの保護まわりで「そんなことが起きるの?」と思うような問題が毎年必ずどこかの部署で発生します。ここでは、マニュアルには絶対に書いていない、現場でしか分からない生の体験談と解決策を惜しみなく公開します。
【実体験①】退職者アカウントが削除される直前に保護解除が間に合わなかった話
これは実際に私が複数の企業で目撃してきたパターンです。担当者が退職して数日後、「あの人のスプレッドシートが開けなくなった」「保護がかかっていて誰も編集できない」という連絡がIT部門に届きます。問題はアカウント削除のタイミングで、Google Workspace管理者が退職者のファイルのオーナー権限を移譲し忘れてしまうケースがほとんどです。
重要なのは、アカウントが削除されてから20日間はデータが復元可能だということです。Google Workspaceの管理コンソールでは、削除後20日以内であれば「最近削除したユーザーを復元」機能を使ってアカウントを一時的に復活させ、オーナー権限の移譲処理を完了させることができます。20日を超えると完全削除となり、そのユーザーがオーナーだったスプレッドシートも道連れになります。
管理者として今すぐできる対策として、退職者が出る際の業務引き継ぎチェックリストに「スプレッドシートのオーナー権限移譲」を必ず含めることを強くおすすめします。Google管理コンソール(admin.google.com)から「アプリ」→「Google Workspace」→「ドライブとドキュメント」→「オーナー権限を譲渡」の順に進めば、旧オーナーのメールアドレスと新オーナーのメールアドレスを入力するだけで一括移譲できます。ただし、オーナー権限の移譲が完全に反映されるまでに最長72時間かかることがあるため、退職日のギリギリに処理するのは絶対にNGです。
【実体験②】「自分が作ったのに解除できない」という謎のトラブルの真相
「私がオーナーなのに保護を解除できません!」という連絡が来て確認したら、原因はとてもシンプルでした。その人はGoogleアカウントを複数持っていて、スプレッドシートを作成したアカウントと、今操作しているブラウザでログインしているアカウントが別のアカウントだったのです。
これは特に個人用GmailアカウントとGoogle Workspaceアカウントを使い分けている人によく起こります。ブラウザ右上のアイコンをクリックしてどのアカウントでログインしているかを確認し、ファイルのオーナーアカウントでログインし直すだけで即解決します。複数のGoogleアカウントを持っている人は、まずこれを確認してください。
Chromeブラウザの場合、複数のプロフィールを使い分けることで混乱を防げます。「このブラウザウィンドウは仕事用アカウント専用」というプロフィール設定にしておくだけで、このようなアカウント混乱トラブルが劇的に減ります。
【実体験③】「変更履歴からの復元」で保護設定も戻ってしまったパターン
Googleスプレッドシートには変更履歴機能があり、過去の状態に戻すことができます。便利な機能ですが、変更履歴で以前のバージョンに戻すと、その時点での保護設定も復元されるということを知らずにハマる人がいます。
具体的には、保護設定を解除してメンバーに作業してもらった後、誤操作で「以前のバージョンに復元」してしまうと、保護設定も元に戻ってしまいます。するとまた誰も編集できなくなる、という事態に陥ります。変更履歴から復元する際は、単にデータだけでなく保護設定も一緒に復元されることを念頭に置いておきましょう。
現場でよく起きる「え、これってどうすればいいの?」問題の具体的な解決方法
保護されているのに自分だけ編集できてしまう問題
チームメンバーから「保護してくれたはずなのに私は普通に編集できます」と言われたことはありませんか? これはバグではなく仕様です。Googleスプレッドシートでは、スプレッドシート自体の編集権限(共有設定)が「編集者」になっているユーザーは、保護設定によって一切ブロックされることはありません。
正確に言うと、保護設定の権限に「自分のみ」を設定した場合でも、「自分」には「スプレッドシートのオーナー」と「自分(設定者)」が含まれます。ファイルの共有設定で「閲覧者」になっているユーザーは保護の影響を受けますが、「編集者」になっているユーザーは原則として保護を超えて編集できます(オーナーが保護設定した範囲に「自分のみ」を設定している場合を除く)。
この「誰が実際に保護の対象になっているのか」をきちんと把握するのが保護設定の一番のポイントです。チームの権限設定と保護設定を整合させることが、期待通りの動作を実現する鍵です。
保護設定がどこにあるか分からなくなった問題
長期間運用してきたスプレッドシートで「どこに保護がかかっているか一覧で確認したい」という場面は頻繁にあります。ここで役立つのが「表示」→「表示」→「保護されている範囲」の機能です。有効にすると、保護されているセルに薄い網掛けが表示されます。
ただし、シート保護(シート全体への保護)はこの表示で区別がつきにくい場合があります。そんなときに便利なのが、下記のGASコードで全保護設定の一覧をスプレッドシートに書き出す方法です。このコードを実行すると、保護の種類・説明・範囲・編集可能ユーザーが一覧化されるので、棚卸しに非常に役立ちます。
function listAllProtections() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var logSheet = ss.getSheetByName('保護設定一覧');
if (!logSheet) {
logSheet = ss.insertSheet('保護設定一覧');
} else {
logSheet.clearContents();
}
logSheet.appendRow);
sheets.forEach(function(sheet) {
if (sheet.getName() === '保護設定一覧') return;
var rangeProtections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
rangeProtections.forEach(function(p) {
var editors = p.getEditors().map(function(e){ return e.getEmail(); }).join(', ');
logSheet.appendRow[
sheet.getName(),
'セル範囲',
p.getDescription(),
p.getRange() ? p.getRange().getA1Notation() : '不明',
editors,
p.isWarningOnly()
]);
});
var sheetProtections = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
sheetProtections.forEach(function(p) {
var editors = p.getEditors().map(function(e){ return e.getEmail(); }).join(', ');
logSheet.appendRow[
sheet.getName(),
'シート全体',
p.getDescription(),
'シート全体',
editors,
p.isWarningOnly()
]);
});
});
SpreadsheetApp.getUi().alert('保護設定一覧シートに書き出しました!');
}
このコードを実行すると「保護設定一覧」という新しいシートが作成され、全シートの保護設定が一覧表示されます。どの範囲に誰が設定した保護があるかが一目で把握でき、チームでの保護設定の棚卸しや引き継ぎ時に非常に重宝します。
特定の名前が付いた保護設定だけを選択的に解除したい問題
「2024年度プロジェクト用」というように説明を付けた保護設定だけを一括削除したい場面があります。そんなときに使えるのが以下のGASコードです。解除したい保護の説明文キーワードを指定するだけで、該当する保護設定のみを削除できます。
function removeProtectionByDescription(keyword) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var count = 0;
// keywordが未指定の場合は確認用に実行する
if (!keyword) {
keyword = '削除対象のキーワードをここに入力';
}
sheets.forEach(function(sheet) {
var allProtections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE)
.concat(sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET));
allProtections.forEach(function(p) {
if (p.getDescription().indexOf(keyword) !== -1 && p.canEdit()) {
p.remove();
count++;
}
});
});
SpreadsheetApp.getUi().alert(count + '件の保護設定を削除しました(キーワード: ' + keyword + ')');
}
使い方は
removeProtectionByDescription('2024年度')
のように呼び出すだけです。
canEdit()
で「自分が削除権限を持つ保護のみ」を対象にしているため、他のユーザーが設定した保護は安全にスキップされます。
Google Workspace管理者だからこそできる「奥の手」の保護解除方法
企業でGoogle Workspaceを利用している場合、IT管理者には一般ユーザーには使えない強力な手段があります。知っておくと、現場からの「どうにもならない」という相談に即座に答えられます。
管理コンソールからのオーナー権限一括移譲
Google Workspace管理者(特権管理者)は、管理コンソールを通じて特定のユーザーが所有するすべてのドライブファイルのオーナー権限を別ユーザーに一括移譲できます。これは退職者のアカウントを削除する前の処理として非常に重要です。
手順は以下のとおりです。管理コンソール(admin.google.com)にログインし、「アプリ」→「Google Workspace」→「ドライブとドキュメント」→「オーナー権限を譲渡」に進みます。「オーナー権限を譲渡するユーザー」に旧オーナーのメールアドレスを、「オーナー権限を受け取るユーザー」に新オーナーのメールアドレスを入力して「ファイルを譲渡」をクリックするだけです。
重要な注意点として、この一括移譲で対象になるのはそのユーザーのマイドライブに存在するファイルのみで、共有ドライブのファイルは対象外です。また、ゴミ箱内のファイルも移譲されません。ゴミ箱内のファイルを移譲したい場合は先にゴミ箱から復元してから処理を行いましょう。
共有ドライブを活用してオーナー問題を根本から解消する
これは情シスの視点から見た「そもそもの設計の見直し」の提案です。個人のマイドライブにスプレッドシートを作成していると、必ずオーナー問題が発生します。業務で使うファイルは最初から共有ドライブ(旧チームドライブ)に作成・保存することで、オーナーという概念そのものをなくせます。
共有ドライブに保存されたファイルは「共有ドライブ自体がオーナー」という扱いになるため、特定の個人アカウントに依存しなくなります。メンバーが退職しても、共有ドライブのファイルには影響がありません。ただし、共有ドライブはGoogle WorkspaceのBusiness Starter以上のプランが必要なため、無料のGmailアカウントでは利用できません。
共有ドライブを使っている場合も、保護設定のオーナーは「作成したユーザー」になる点は変わりません。つまり、共有ドライブ上のスプレッドシートでも、保護設定を作ったユーザーが退職すると同様の問題が起きます。完全に解決するには、以下のGASコードで定期的に保護設定の棚卸しを自動化するのが現実的です。
「これ知らなかった!」と思うGASの実践的な保護テクニック集
新しい行が追加されたら自動で保護をかけるGAS
入力フォームからデータが追加されるたびに、その行を自動的に保護(読み取り専用化)したい場面があります。たとえば申請書類や確認済みデータを「送信後は変更不可」にしたいケースです。以下のコードをonEdit(編集時)トリガーとして設定すると、A列にチェックが入った行を自動的に保護します。
function autoProtectCheckedRow(e) {
var sheet = e.source.getActiveSheet();
var range = e.range;
// A列のチェックボックスがONになったら該当行を保護する
if (range.getColumn() === 1 && range.getValue() === true) {
var rowIndex = range.getRow();
var rowRange = sheet.getRange(rowIndex, 1, 1, sheet.getLastColumn());
var protection = rowRange.protect();
protection.setDescription('確認済み行 - 行' + rowIndex);
// 自分(スクリプト実行者)以外の編集者を全員除外
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors().filter(function(editor) {
return editor.getEmail() !== me.getEmail();
}));
SpreadsheetApp.getUi().alert('行 ' + rowIndex + ' を保護しました。');
}
// A列のチェックボックスがOFFになったら保護を解除する
if (range.getColumn() === 1 && range.getValue() === false) {
var rowIndex = range.getRow();
var rowRange = sheet.getRange(rowIndex, 1, 1, sheet.getLastColumn());
var protections = rowRange.getProtections(SpreadsheetApp.ProtectionType.RANGE);
protections.forEach(function(p) {
if (p.canEdit()) p.remove();
});
}
}
このスクリプトをインストーラブルトリガーの「スプレッドシートを編集したとき」に設定することで、A列のチェックボックスをONにするとその行が自動保護され、OFFにすると保護が解除されます。ただし、インストーラブルトリガーはオーナーのアカウントで動作するため、このスクリプトはオーナーが設定する必要があります。
特定のシートだけを保護・解除するGAS(シート名指定版)
「マスターデータ」「設定シート」という名前のシートだけを一括で保護したい場面に使えるコードです。シート名のリストを配列で指定するだけで選択的に保護をかけられます。
function protectSpecificSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
// 保護したいシート名を配列で指定する
var targetSheets = ;
var me = Session.getEffectiveUser();
var protectedCount = 0;
targetSheets.forEach(function(sheetName) {
var sheet = ss.getSheetByName(sheetName);
if (!sheet) {
Logger.log(sheetName + ' というシートは見つかりませんでした。');
return;
}
// 既存の保護をチェックして重複保護を防ぐ
var existing = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
if (existing.length > 0) {
Logger.log(sheetName + ' はすでに保護されています。スキップします。');
return;
}
var protection = sheet.protect();
protection.setDescription(sheetName + ' - 自動保護 ' + new Date().toLocaleDateString());
protection.addEditor(me);
protection.removeEditors(protection.getEditors().filter(function(e) {
return e.getEmail() !== me.getEmail();
}));
protectedCount++;
});
SpreadsheetApp.getUi().alert(protectedCount + '枚のシートを保護しました。');
}
function unprotectSpecificSheets() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var targetSheets = ;
var removedCount = 0;
targetSheets.forEach(function(sheetName) {
var sheet = ss.getSheetByName(sheetName);
if (!sheet) return;
var protections = sheet.getProtections(SpreadsheetApp.ProtectionType.SHEET);
protections.forEach(function(p) {
if (p.canEdit()) {
p.remove();
removedCount++;
}
});
});
SpreadsheetApp.getUi().alert(removedCount + '件の保護設定を解除しました。');
}
GASのメニューから手動で保護のON/OFFを切り替える方法
スプレッドシートに独自メニューを追加して、ボタンひとつで保護の設定/解除ができるようにする方法です。特にIT知識がないチームメンバーが保護設定を管理する必要がある場合に便利です。
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('\u\U0001f512 保護管理')
.addItem('保護設定一覧を確認する', 'listAllProtections')
.addItem('全保護を解除する(要注意)', 'removeAllProtections')
.addSeparator()
.addItem('指定シートを保護する', 'protectSpecificSheets')
.addItem('指定シートの保護を解除する', 'unprotectSpecificSheets')
.addToUi();
}
このコードを追加してスプレッドシートを再読み込みすると、メニューバーに「\u\U0001f512 保護管理」というメニューが追加されます。チームのルールとして「保護の変更はこのメニューから行う」と決めることで、誰がいつ変更したかの操作ルールが統一されます。
保護設定の「運用ルール」を決めておかないと後悔する理由
技術的な方法だけを知っていても、チームでの運用ルールが決まっていないと「誰が設定したか分からない保護」「解除したいが怖くて消せない保護」が積み重なっていきます。10年以上の現場経験から言うと、保護トラブルの8割は技術的な問題ではなく、運用・コミュニケーションの問題です。
最低限決めておくべきルールとして、保護設定を作成する際は必ず「目的・設定者の名前・設定日」を説明欄に記入すること、定期的(たとえば四半期ごと)に保護設定の棚卸しを行うこと、そして「このシートを編集したい場合は誰に連絡すればよいか」をシートのどこかに明記しておくことが挙げられます。
また、スプレッドシートのオーナーを「個人アカウント」ではなく「共有のチームアカウント」にしておくという運用も有効です。たとえば「team-spreadsheet@example.com」のような共有アカウントをオーナーにして、チームの複数メンバーがそのアカウントにアクセスできるようにしておけば、特定の個人が退職しても影響を受けません。
ぶっちゃけこうした方がいい!
長年、情シスとして何十社もの現場でGoogle Workspaceを運用してきて正直に思うことを言います。スプレッドシートの保護トラブルで時間を無駄にしている人の9割は、「そもそもの設計が個人依存になっている」ことが根本原因です。
保護解除の手順を覚えることよりも、前もって「退職しても・担当が変わっても崩れない設計」を作ることの方が、長い目で見ると何十倍も価値があります。業務用のスプレッドシートは個人のマイドライブではなく共有ドライブに置く、オーナーは共有の運用アカウントにする、保護設定には必ず説明を書く——この3つのルールを今日から徹底するだけで、将来的な「解除できない!」という騒動はほぼゼロになります。
GASのコードも大事ですが、個人的にいちばん効いたのは「誰かが退職する前に必ずスプレッドシートのオーナー移譲チェックをする」という社内プロセスを作ったことでした。管理者コンソールでの一括移譲は便利なツールですが、それを使う機会を作らないような仕組みを先に整える方が、ぶっちゃけ楽だし効率的です。
「解除できない」という状況に陥ってから対処するのは、いわばパンクしてから修理する発想です。「最初からパンクしないタイヤを選ぶ」設計、つまり保護トラブルそのものが起きにくい環境を整えることに時間を使ってください。それが情シス経験者として自信を持っておすすめできる、最も本質的な解決策です。
スプレッドシートの保護シートが解除できない問題に関するよくある疑問
自分がオーナーなのに「ゴミ箱アイコン」が表示されないのはなぜ?
ゴミ箱アイコンが表示されない場合、最初にサイドパネルで「新規追加」の画面が開いている可能性があります。その場合は「キャンセル」ボタンをクリックして保護設定の一覧表示に切り替えてください。一覧から保護設定をクリックして選択状態にすると、はじめてゴミ箱アイコンが表示されます。
また、ファイルがExcel形式(.xlsx)のまま開いている場合はメニュー自体が表示されません。「ファイル」→「Googleスプレッドシートに変換」でファイル形式を変換してから再度試してみましょう。
編集者権限があるのに保護を解除できないのはなぜ?
Googleスプレッドシートでは、編集者権限があっても他のユーザーが設定した保護は解除できません。保護を解除できるのはその保護の設定者かファイルのオーナーだけです。編集者権限があっても「保護を設定・解除する権限」は別物として扱われています。オーナーに直接連絡して解除または権限付与を依頼しましょう。
スマートフォンから保護を解除する方法はある?
Googleスプレッドシートのモバイルアプリからは、保護の新規設定も解除も行えません。スマートフォンのブラウザでPCサイトを表示する「デスクトップ表示」モードで操作できる場合もありますが、画面が小さくて操作が難しいため非推奨です。保護の管理はパソコンのブラウザから行うのが確実です。
退職した前任者が設定した保護を解除したいが、本人に連絡できない。どうすれば?
企業や組織でGoogle Workspaceを利用している場合は、IT管理者(Google Workspace管理者)に相談することで管理者権限での対応が可能な場合があります。個人のGmailアカウントで作成されたファイルの場合は、管理者権限での対応が難しいため、「ファイル」→「コピーを作成」でコピーを作り、コピー先のファイルで作業を進めるのが現実的な解決策です。
自分自身が誤操作しないように自分の編集も制限できる?
残念ながら、Googleスプレッドシートの保護機能ではオーナーの編集を制限することはできません。オーナーはすべての保護を無条件に超えて編集できる仕様になっています。「この範囲を編集するときに警告を表示する」モードを使えばオーナー自身にも警告を出せますが、確認を押せば編集できてしまいます。自分自身の誤操作を防ぎたい場合は、別のGoogleアカウントにオーナー権限を移譲して自分を編集者に格下げするか、GASを使った独自のロック機能を実装するという上級者向けの方法が存在します。
今すぐパソコンやスマホの悩みを解決したい!どうしたらいい?
いま、あなたを悩ませているITの問題を解決します!
「エラーメッセージ、フリーズ、接続不良…もうイライラしない!」
あなたはこんな経験はありませんか?
✅ ExcelやWordの使い方がわからない💦
✅ 仕事の締め切り直前にパソコンがフリーズ💦
✅ 家族との大切な写真が突然見られなくなった💦
✅ オンライン会議に参加できずに焦った💦
✅ スマホの重くて重要な連絡ができなかった💦
平均的な人は、こうしたパソコンやスマホ関連の問題で年間73時間(約9日分の働く時間!)を無駄にしています。あなたの大切な時間が今この悩んでいる瞬間も失われています。
LINEでメッセージを送れば即時解決!
すでに多くの方が私の公式LINEからお悩みを解決しています。
最新のAIを使った自動応答機能を活用していますので、24時間いつでも即返信いたします。
誰でも無料で使えますので、安心して使えます。
問題は先のばしにするほど深刻化します。
小さなエラーがデータ消失や重大なシステム障害につながることも。解決できずに大切な機会を逃すリスクは、あなたが思う以上に高いのです。
あなたが今困っていて、すぐにでも解決したいのであれば下のボタンをクリックして、LINEからあなたのお困りごとを送って下さい。
ぜひ、あなたの悩みを私に解決させてください。
まとめ
Googleスプレッドシートの保護シートが解除できない原因は、大きく分けて「権限の問題」「ファイル形式の問題」「オーナー不在の問題」「複数の保護設定の競合」「モバイルからの操作」の5つです。
自分がオーナーであれば「データ」→「シートと範囲を保護」からゴミ箱アイコンをクリックするだけで解除できます。オーナーでない場合は、オーナーへの直接連絡か、ファイルをコピーして自分がオーナーの新しいファイルで作業するという方法が現実的な解決策です。大量の保護設定を一括で解除したい場合はGASが強力な味方になります。
保護機能はチームでのデータ管理に欠かせないツールです。「誰が何を編集できるか」を定期的に見直し、説明文をしっかり記入しておく運用習慣をつけることで、「解除できない!」というトラブル自体を未然に防ぐことができます。この記事を参考に、スプレッドシートの保護を上手に使いこなしてください。






コメント