複数人で共有しているスプレッドシートを運用していると、マスターデータや数式が入ったセルが、他のユーザーによってうっかり上書きされてしまうことがあります。
共有状態のシートで起きる誤操作の防止
自動化システムが参照しているデータが書き換えられると、後続の処理で思わぬエラーを引き起こします。GASの処理内でシートを新規作成したりデータを書き込んだりする際、同時にシートを保護して編集権限を制限しておけば、こうした人的ミスによる誤編集の防止につながります。
スプレッドシートの触られたくない範囲を保護する記述
現在アクティブなシート全体を保護し、自分(オーナー)以外の編集権限を剥奪するコードです。
const sheet = SpreadsheetApp.getActiveSheet();
const protection = sheet.protect().setDescription("マスタ保護");
protection.removeEditors(protection.getEditors());
sheet.protect()で対象を保護し、removeEditorsで現在の編集者リストを削除しています。これで一般ユーザーには閲覧のみが許可され、触られたくない範囲の安全が確保されます。
一部のメンバーに特定ユーザー許可を与える場合
基本的にはロックしておきたいものの、データ管理者など一部の担当者にはメンテナンスのために編集させたいケースがあります。その場合はaddEditor(email)を使って個別に権限を追加します。
// 先ほどのコードの後に続けて記述します
protection.addEditor("admin@example.com");
メールアドレスを指定して特定ユーザー許可を与えることで、柔軟に編集権限をコントロールできます。

