保護された範囲やシートの制御
特定のスプレッドシートから、保護された範囲やシートを取得する関数について解説します。
利用する関数
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();
}
}
};
実行すると、指定したスプレッドシートについて、すべての保護されている範囲の保護を解除します。
このメソッドを使用するスクリプトには、あらかじめ承認が必要になります。
また、実行ユーザーが権限を保有していない場合は、解除することはできません。