2022/08/31に更新

【GASで安全】特定ユーザーによるGASの実行を禁止する

スプレッドシート小技

指定したユーザーによるGASの実行をブロックするGoogle Apps Scriptです。ブラックリスト方式で制御したいときに。

こんな悩みを解決します


  • 特定のユーザーだけGASが実行できないようにしたい。
  • ファイルは見せる必要があるが、GASは実行させたくない。

用意するもの


特にありません。サンプルスクリプトはスプレッドシートのコンテナバインド型で実装していますが、ドキュメントやスライド等でも同じように実装できます。

このスクリプトで出来ること


  • ブラックリストとして登録したユーザー(メールアドレス)がGASを実行しようとした場合、何もせず終了します。
  • ブラックリストは配列になっていますので、何件でも登録することが可能です。

使い方


1.事前準備

スクリプトの「事前設定エリア」を書き換えます。
ブラックリスト用の変数「blacklists」がありますので、ブロックしたいユーザーのメールアドレスを必要なだけ追加してください。
追加が終わったら保存して、関数「onOpen」を一度実行しておきましょう。

2.スクリプトの実行

スプレッドシートに戻り、上のメニューにある「スクリプト実行」から「特定ユーザーの実行をブロック」を実行します。

3.実行結果の確認

自分のメールアドレスをブラックリストに登録したので「あなたは実行することができません・・・」と言われてしまいました。

自分のメールアドレスをブラックリストから外した場合は、このようにスクリプトが実行されました。

サンプルスクリプトではブラックリスト判定と実行したい処理を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('スクリプトが実行されました!');

}

関連するアプリ


タグ一覧

最新のアプリ

人気のアプリ

ページトップに戻る
myfunc.jp