LoginSignup
5
4

More than 5 years have passed since last update.

共有スプレッドシートで管理者ユーザー以外がスクリプトを実行できないようにする

Last updated at Posted at 2016-04-07

Googleスプレッドシートは、共有できてマクロ(GAS)も使える

Googleスプレッドシートは便利です。
みんなでスプレッドシートを共有することができます。しかも、共有したスプレッドシートで、マクロ(GAS:Google Apps Script)を実行できるので、めちゃくちゃ便利です。

管理者だけが実行したいマクロもある

でも、スプレッドシートの管理者だけが実行したいマクロもあります。

例えば、スプレッドシートのマクロ(GAS)から、何かしらの通知メールが送信できますが、特定のアカウントからメール送信しないと、誰にどんな通知メールが送られたのか、ログが残りません。(スプレッドシートを開いているユーザーのアカウントからメールが送信されます。)

そのため、管理者アカウントでない人からは、そのスクリプトを実行できないように考慮しておく必要もあります。


function hoge_script() {
  var mail =   Session.getActiveUser().getEmail();
  if (mail !== "***@gmail.com") {
    alert("管理者アカウントでアクセスしてください");
    return;
  }
}

上記のようなスクリプトを仕込んでおけば、管理者以外からスクリプトを実行することができません。

スプレッドシート違いを防ぐ

ほかにも、特定のスプレッドシートを開いているときだけ、有効にしたいマクロもあることでしょう。

シート名(sheet.getName())を使っても良いのですが、特定のセルに、特定の文字列があるかどうかを調べるのもありです。

var active_sheet = SpreadsheetApp.getActiveSheet();
var title = sheet.getRange("A1").getValue();
var i = title.indexOf("***計画表");
if (i < 0) {
  alert("***計画表をアクティブにしてください");
  return;
}

メッセージの表示用

GASには、alert()関数がないので、以下のような関数を定義しておくと便利です。

function alert(msg) {
    var ui = SpreadsheetApp.getUi();
    ui.alert('一言', msg, ui.ButtonSet.OK);
}
5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4