【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でやろうとすると反応が遅いですね。以下が使用例。
スポンサーリンク