【GAS】スプレッドシートの範囲の保護をGASで自作してみた
GoogleスプレッドシートではExcel同様セルの編集をさせないための保護機能があります。ただ、スプシの場合、オーナーの編集は許されていてロックをかけることができません。オーナーも同じく保護してくれるExcelとはちょっと異なります。
なので、GAS(Google Apps Script)で自作してみました。以下がソースコード。編集時イベントを発生させるonEdit関数を使います。
function onEdit(e){
//シートごとに編集可能な範囲を指定する。
var range = "";
sheet = e.source.getActiveSheet()
if(sheet.getName()=="(特定のシート名1)") range = "C7:C28";
if(sheet.getName()=="(特定のシート名2)") range = "A1:D5";
if(range=="") return;
var val = e.oldValue; //編集前の値
var r = e.range.getRow();
var c = e.range.getColumn();
if(r<sheet.getRange(range).getRow() || r>sheet.getRange(range).getLastRow() ||
c<sheet.getRange(range).getColumn() || c>sheet.getRange(range).getLastColumn() ){
e.range.setValue(val); //編集前の値に戻す
Browser.msgBox('編集できません');
}
}
できたことはできましたが、やはりGASでやろうとすると反応が遅いですね。以下が使用例。
スポンサーリンク
