スプレッドシートをみんなで使っていると、うっかり編集してはいけない部分を触ってしまうこと、ありますよね。特に、計算式や重要なデータが入っているセルを誤って変更されると、大変です。そんなときに役立つのが、Google Apps Script(GAS)を使った「一括保護」の方法です。
今回は、初心者の方でもわかりやすいように、GASを使ってスプレッドシートを一括で保護する方法を、実際のコードとともにご紹介します。これを覚えれば、誤操作を防ぎ、安心してスプレッドシートを共有できますよ。
目次
GASでスプレッドシートを一括保護するとは?
スプレッドシートを複数人で使っていると、誰かがうっかり重要なセルを編集してしまうことがあります。そんなとき、GASを使って一括で保護をかけることで、誤操作を防ぐことができます。
例えば、計算式が入っているセルや、他のシートから参照されているセルなど、触ってほしくない部分を保護することで、安心して共同作業ができます。
GASで一括保護する基本のコード
まずは、GASを使ってスプレッドシートのすべてのシートを保護する基本のコードをご紹介します。
function protectAllSheets() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
sheets.forEach(function(sheet) {
var protection = sheet.protect().setDescription('保護されたシート');
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
});
}
このコードを実行すると、スプレッドシート内のすべてのシートが保護され、スクリプトを実行したユーザーだけが編集できるようになります。
特定のセル範囲を保護する方法
すべてのシートを保護するのではなく、特定のセル範囲だけを保護したい場合は、以下のようにコードを変更します。
function protectSpecificRange() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange('B10');
var protection = range.protect().setDescription('重要な範囲');
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
}
このコードを実行すると、指定したセル範囲(この例ではからB10)が保護され、スクリプトを実行したユーザーだけが編集できるようになります。
チェックボックスで行を保護・解除する方法
チェックボックスを使って、選択した行を保護したり、保護を解除したりする方法もあります。以下のコードは、チェックボックスがオンの行を保護し、オフの行の保護を解除する例です。
function protectRowsBasedOnCheckbox() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data = sheet.getDataRange().getValues();
data.forEach(function(row, index) {
var checkbox = row; // チェックボックスがA列にあると仮定
var range = sheet.getRange(index + 1, 1, 1, sheet.getLastColumn());
var protection = range.protect().setDescription('行 ' + (index + 1));
var me = Session.getEffectiveUser();
protection.addEditor(me);
protection.removeEditors(protection.getEditors());
if (!checkbox) {
protection.remove();
}
});
}
このコードを実行すると、A列のチェックボックスがオンの行が保護され、オフの行の保護が解除されます。
注意点とまとめ
オーナー権限の制限Googleスプレッドシートでは、シートやセルの保護をかけても、オーナーやスクリプトを実行したユーザーは編集可能です。これを制限することはできません。
保護の解除保護されたセルやシートの編集を行いたい場合は、スプレッドシートのオーナー権限を持つユーザーに解除を依頼する必要があります。
スクリプトの実行GASのスクリプトは、スプレッドシートのオーナーや編集者であっても、スクリプトの実行権限がないと実行できません。スクリプトを共有する際は、実行権限の設定に注意しましょう。
よくある質問や疑問
Q1: GASのスクリプトを実行するには、どのようにすればよいですか?
スプレッドシートを開いた状態で、メニューの「拡張機能」から「Apps Script」を選択し、スクリプトエディタを開きます。そこで上記のコードを貼り付けて保存し、実行することができます。
Q2: 保護をかけたセルの内容を変更したい場合はどうすればよいですか?
保護をかけたセルの内容を変更するには、スプレッドシートのオーナー権限を持つユーザーが保護を解除する必要があります。解除方法は、右クリックで「保護を解除」を選択するか、「データ」メニューから「保護されたシートと範囲」を選択して解除できます。
Q3: チェックボックスの状態で行の保護を切り替える際、誤ってチェックボックスを削除してしまった場合はどうすればよいですか?
チェックボックスが削除されてしまった場合、手動でチェックボックスを再挿入する必要があります。再挿入後、再度スクリプトを実行することで、保護の状態を更新できます。
まとめ
GASを使ってスプレッドシートを一括で保護する方法をご紹介しました。これを活用すれば、誤操作によるデータの変更を防ぎ、安心して共同作業ができます。ぜひ、実際に試してみてください。
他にも疑問やお悩み事があれば、お気軽にLINEからお声掛けください。



コメント