LANG SELRCT

コードを書く場所

2019年10月22日火曜日

GASで実行するユーザを個別に絞りたい


emailsで設定したユーザーだけが実行できるようにしたい


HtmlServiceのスクリプトで書く場合

ウェブアプリの導入の設定が
User accessing the web app(このアプリケーションにアクセスしているユーザー)
全ユーザーがアクセスできる状態で
var emails で設定した
  'foo@gmail.com',
  'bar@gmail.com'
だけが実行できるようにしたい。


コード.gs
var emails = [
  'foo@gmail.com',
  'bar@gmail.com'
  ];

var email = Session.getActiveUser().getEmail();
var checkEmail = emails.some(judge);

function judge(value) {
  return value === email;
}


function doGet(e) {
  if(checkEmail === true) {
    var html = '<label>hello</label>';
  } else {
    var html = '<div>このアプリを開く権限がありません。</div>';
  }
  return HtmlService.createHtmlOutput(html);
}








スプレッドシート内のスクリプトで書く場合
(ちょっと書き方を変えた)

シートを複数人で共有している状態で
  'foo@gmail.com',
  'bar@gmail.com'
だけがスクリプトを実行できるようにしたい。


コード.gs
var email = Session.getActiveUser().getEmail();

function myFunction() {
  var checkEmail = judgeEmail(email);
  var message;
  if(checkEmail === true) {
    message = 'hello';
  } else {
    message = 'このアプリを実行する権限がありません。';
  }
  Browser.msgBox(message)
}

var emails = [
  'foo@gmail.com',
  'bar@gmail.com'
  ];

function judgeEmail() {
  return emails.some(function(value) {
    return value === email;
  });
}