URLをコピーしました!
スキルアップを始める!

GASでセルの保護機能を設定する方法(保護の自動化)|protect()メソッド

GAS(GoogleAppsScript)
\ワードプレスのスキルアップはこちら!/ WordPress入門読本

GAS(Google Apps Script)を使用してスプレッドシート上で作業している場合、セルの保護機能を活用することができます。

セルの保護機能とは?

セルの保護機能は、スプレッドシート上の特定のセルにアクセス制限をかけることができます。これは、重要な情報が入力されたセルを誤って変更したり削除したりすることを防ぐために役立ちます。

セルの保護機能を使用するには、まず保護したいセルを選択し、メニューから「データ」>「シートと範囲を保護」を選択します。次に、保護範囲を設定し、必要に応じて編集権限を設定します。

さらに、GASを使用することで、スクリプトから保護されたセルに対して編集を行うことができます。これは、スクリプトによるデータの自動入力や更新などで役立ちます。

たとえば、特定のセルに対して、定期的に自動的にデータを入力するスクリプトを作成することができます。この場合、スクリプトは保護されたセルに対して編集を行い、他の人が誤ってデータを変更することを防止することができます。

protect()メソッドでセルを保護する

以下に、GASを使用して保護されたセルに対して編集を行う簡単なスクリプト例を示します。

function editProtectedCell() {
  var sheet = SpreadsheetApp.getActiveSheet(); // アクティブなシートを取得
  var cell = sheet.getRange("A1"); // 編集するセルを指定
  var protection = cell.protect(); // セルを保護
}

以下のようにすることで、保護されたセルに編集権限を追加したり、保護の解除を行うこともできます。

function editProtectedCell() {
  var sheet = SpreadsheetApp.getActiveSheet(); // アクティブなシートを取得
  var cell = sheet.getRange("A1"); // 編集するセルを指定
  var protection = cell.protect(); // セルを保護
  
  // 編集権限を設定
  var editors = protection.getEditors();
  protection.addEditor("user@example.com");
  protection.removeEditor(editors[0]);
  
  // セルの編集を行う
  cell.setValue("テスト");
  
  // セルの保護を解除
  protection.remove();
}

このスクリプトは、シート上のA1セルを保護し、指定したユーザーに編集権限を与えます。その後、A1セルに値を設定し、保護を解除します。

「範囲の保護」を全部解除する

以下のようにすることで、シート内の範囲の保護を全て解除することもできます。

//「範囲の保護」を全部解除する
function resetProtect() {
  const protections = sheet.getProtections(SpreadsheetApp.ProtectionType.RANGE);
  for (var i = 0; i < protections.length; i++) {
    var protection = protections[i];
    if (protection.canEdit()) {
      protection.remove();
    }
  }
}

GASで保護をする場合、保護範囲が次々に追加されていきますので、先にリセット処理を入れておくという方法も有効かもしれません。

オーナーのみ編集可能にする

[rml_read_more]

以下のようにすることで、オーナーのみセルを編集可能にすることもできます。

  //最終行列を取得する
  const lastCol = sheet.getLastColumn();
  const lastRow = sheet.getLastRow();  
  //保護をする 1~5行目まで
  const protections = sheet.getRange(1, 1, 5, lastCol).protect();
  //保護したシートで編集可能なユーザーを取得
  const userList = protections.getEditors();
  //編集ユーザーをすべて削除(オーナーのみ編集可能)
  protections.removeEditors(userList);

まとめ

セルの保護機能を活用することで、スプレッドシート上のデータをうっかり編集された…を防ぐことができます。

また、GASを組み合わせることで、より効果的にデータ管理を行うことができます。

ご参考ください。

Kindle Unlimited 会員は無料で購読できます
購読はこちら
Kindle Unlimited 会員は無料で購読できます
購読はこちら