指定したユーザーによるGASの実行をブロックするGoogle Apps Scriptです。ブラックリスト方式で制御したいときに。
特にありません。サンプルスクリプトはスプレッドシートのコンテナバインド型で実装していますが、ドキュメントやスライド等でも同じように実装できます。
スクリプトの「事前設定エリア」を書き換えます。
ブラックリスト用の変数「blacklists」がありますので、ブロックしたいユーザーのメールアドレスを必要なだけ追加してください。
追加が終わったら保存して、関数「onOpen」を一度実行しておきましょう。
スプレッドシートに戻り、上のメニューにある「スクリプト実行」から「特定ユーザーの実行をブロック」を実行します。
自分のメールアドレスをブラックリストに登録したので「あなたは実行することができません・・・」と言われてしまいました。
自分のメールアドレスをブラックリストから外した場合は、このようにスクリプトが実行されました。
サンプルスクリプトではブラックリスト判定と実行したい処理を1つの関数にまとめていますが、実運用では実行したい処理を別の関数で用意して、ブラックリスト判定のあとに関数を呼ぶ形が好ましいと思います。
/**
* このスクリプトの説明、使い方はこちら。
* https://myfunc.jp/items/00136/index.html
*/
function onOpen() {
// スプレッドシートを開いたときに実行される関数
// UIの取得
const ui = SpreadsheetApp.getUi()
// メニューの表示名
const menu = ui.createMenu('スクリプト実行');
// メニューに追加するボタン
menu.addItem('特定ユーザーの実行をブロック', 'gas_exec_block_by_blacklist');
// メニューを画面に追加する
menu.addToUi();
}
function gas_exec_block_by_blacklist() {
// ########## 事前設定エリア ここから ##########
// 禁止ユーザーのメールアドレスをしまっておく配列
const blacklists = [];
// ブラックリストにメールアドレスを追加する。必要な分だけ行数を増やす。
blacklists.push('*****@example.com');
blacklists.push('*******@example.com');
// ########## 事前設定エリア ここまで ##########
// GASの実行ユーザーのメールアドレスを取得する
const active_uesr = Session.getActiveUser().getEmail();
// 実行ユーザーのメールアドレスがブラックリストに含まれる場合は
if (blacklists.includes(active_uesr)) {
// メッセージを表示する
SpreadsheetApp.getUi().alert('あなたは実行することができません・・・');
// スクリプトを終了する
return;
}
// 実行したい処理や関数を記述する
SpreadsheetApp.getUi().alert('スクリプトが実行されました!');
}