GoogleAppsScript
GoogleSpreadSheet

スプレッドシートでワークシートのコピーを禁止する方法

More than 1 year has passed since last update.

Googleスプレッドシートにて、以下を実現する方法を 模索していました。

  • シート内のセル編集は許可したい
  • ワークシートのコピーは禁止したい

なので、単純に閲覧権限で共有する方法だとセル編集も禁止となってしまい、やりたいことが実現できずにいました。

解決方法

シートコピーのイベントを検知する方法が見当たらなかったため、
少し強引ですが以下のGASを記述することでシートのコピーを制限する事が出来ました。

※以下のコードに対し、スプレッドシートの値編集時にトリガー実行するよう設定しておく

function disableCopy() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  if(sheet.getName().indexOf('のコピー') != -1){
    ss.deleteActiveSheet();
    Browser.msgBox("シートのコピーを制限しています。", Browser.Buttons.OK);
  }
}

もしもっとスマートな方法を知っている方いましたら、教えていただけると嬉しいです!