Skip to main content

保護された範囲やシートの制御

特定のスプレッドシートから、保護された範囲やシートを取得する関数について解説します。

利用する関数

Spreadsheet.getProtections(type);

Spreadsheet クラスに用意されている、getProtections()を使用します。

引数には文字列を指定し、通常は Spreadsheet クラスから提供されている定数を使用します。

実行にあたってスプレッドシートにアクセスすることになるため、初回実行時に認証が必要になる場合があります。

サンプルコード

/**
* 対象スプレッドシートのID
* https://docs.google.com/spreadsheets/d/〇〇〇/edit の〇〇〇の部分
*/
const SPREAD_SHEET_ID = '_______________';

/**
* 保護されている範囲の保護を解除します
*/
const removeProtections = () => {
/** 対象スプレッドシート */
const ss = SpreadsheetApp.openById(SPREAD_SHEET_ID);

/** 保護されている範囲 */
const rangeProtections = ss.getProtections(SpreadsheetApp.ProtectionType.RANGE);
/** 保護されているシート */
const sheetProtections = ss.getProtections(SpreadsheetApp.ProtectionType.SHEET);

// 範囲の保護を解除する
for (const protection of rangeProtections) {
if (protection.canEdit()) {
protection.remove();
}
}
};

実行すると、指定したスプレッドシートについて、すべての保護されている範囲の保護を解除します。

このメソッドを使用するスクリプトには、あらかじめ承認が必要になります。

また、実行ユーザーが権限を保有していない場合は、解除することはできません。