前提・実現したいこと
初めて質問させて頂きます。
GASの超初心者で、マクロの記録にて作成されたスクリプトを修正しながら目的に近づけております。
【前提条件】
・シート内の指定したセルに保護をかけ、保護をかけた者及びオーナー以外が編集できないようにしている。
・現在は、一つ一つのセルを指定し保護をかけている為、スクリプト実行時間が長くなっている。
発生している問題・エラーメッセージ
【実現したいこと】
実行時間を短くする為に「一つずつセル指定→保護」ではなく「範囲をまとめて指定→保護」が行えないでしょうか?
ただし保護したいセルは、1行飛ばし(下記例ご参照)で存在するため、この要件をどう入力すればいいか分かりません。
≪例≫
H8:H24の範囲において、保護したいセルはH8より1行飛ばしのセル(H8・H10・H12・H14・H16・・・)のみ。
また、保護をかけたいセルは、H列だけでなくJ列・L列のように複数あります。
そして上記同様に、このJ列・L列においても指定範囲の1列目より1行飛ばしのセルが、保護をかけたいセルとなっております。
【その他】
下記ソースコードでの実行時間は1分近くかかっており、少しでも早められないかと思っております。
エラーメッセージ
該当のソースコード
spreadsheet = SpreadsheetApp.getActiveSheet();
var protection = spreadsheet.getRange('I8:I39').protect();
var userList = protection.getEditors();
protection = spreadsheet.getRange('I8:I39').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('I59:I94').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H8').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F9').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H10').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F11').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H12').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F13').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H14').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F15').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H16').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F17').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H18').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F19').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H20').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F21').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H22').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F23').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H24').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F25').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H26').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F27').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H28').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F29').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H30').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F31').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H32').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F33').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H34').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F35').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H36').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F37').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H59').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F60').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H61').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F62').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H63').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F64').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H65').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F66').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H67').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F68').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H69').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F70').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H71').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F72').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H73').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F74').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H75').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F76').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H77').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F78').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H79').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F80').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H81').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F82').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H83').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F84').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H85').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F86').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H87').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F88').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('H89').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('F90').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('O8:O39').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('O59:O94').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('E8:E37').protect();
protection.removeEditors(userList);
protection = spreadsheet.getRange('E59:E90').protect();
protection.removeEditors(userList);
};
ソースコード
試したこと
1行とばしてセルを指定するスクリプトの書き方について、
各HPにて調べましたが求めるものがなく、お手上げとなりこちらにご相談させて頂きました。
宜しくお願い致します。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

回答1件
あなたの回答
tips
プレビュー