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);
}