【FileMaker＋GAS】アカウント申請管理システムを作ってみた話

FileMaker のアカウント申請管理が手作業そのものだったため、システム化して作業コストを下げた話です。
誰もが思いつくようなネタだと思いますが、取り組もうと思うと案外コストが掛かるので二の足を踏む方もいらっしゃると思います。

この投稿では、どんなつくりをしたかの概要と「やっぱり楽になるよ～」ということをお伝えできたらと思います。

# 話の経緯
情シス部門にとって、社内システムの権限・アカウント管理は一つの大事なお仕事ですよね。

「あのファイルで◯◯◯したい」「△△できる権限が欲しい！」といったユーザーメンバーの要望に答えつつ、
ITリテラシーの高くないユーザーでも安心・安全に使えるよう、適切な権限を設定するのが肝要です。

ただ、ちょっっと面倒に思う、、というのが偽らざるところでした。

## ちょっと面倒に思うところ
### 一度にまとめて設定する方法がない
普段は特に気にすることはありませんが、4月に新メンバーが入ってきたり配置替えシーズンには
一度にいくつものファイルでユーザーのアカウント設定を行う必要があります。

まとめて設定できればいいのですが、FileMaker そのものにはそういった機能はありません。
ピティナでは163ファイルほど運用しているのですが、これだけあると特定のファイルを探すだけでも面倒に感じます。

また、依頼管理の面でも面倒に思うことがあります。

### 「◯◯に必要なファイル一式に権限をお願いします」
このような依頼のされ方をすることもありましたが、、すべての業務に精通しているわけではないので、
「必要なファイルをチームの上長に聞いてください・・」とお返しすることもありました。

### 情シスチーム内の情報共有が手間
依頼をいただく際、これまではメールや口頭で依頼をいただいていました。・・すでに良くない匂いがしますね苦笑

すると、
* 同じ依頼を複数人で対応しようとしてしまう
* 設定が必要なファイルに漏れがでる
* ということを気にして、「この依頼だれかやってます？」みたいな確認が増える
といった課題も発生していました。

個人的には、抜け漏れがでないように神経を使うのが割とストレスを感じるポイントでした。

# 申請管理システム
ということで、次の３つを目的に申請管理システムを作ることにしました。

* 依頼を管理できること
* 依頼時の手入力（誤入力）を減らす
* 権限発行時の手間を小さくする

ここからは、それぞれの目的をどのようにクリアしていったかをご紹介します。

## 依頼を管理できること
依頼を入力してもらうフォームを用意することにしました。
Googleアカウントの申請も管理するためスプレッドシートにしましたが、FileMakerだけならFileMaker上に作るのが筋が良さそうです。

**申請管理シート**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16382/40ba18a3-4ceb-65c4-69e0-49e0793762a3.png)

この内、ユーザーに入力をしてもらうのは左側の青い列になります。

1. サーバ
    2. ファイルを指定するための補助用の列になります。
    3. 最初にサーバーを指定することでファイルが探しやすくなります
3. ファイル名
    4. 利用したいファイルを指定してもらいます
5. アカウント名
6. 理由・目的
    7. 使いたい権限が分かっている方は、直接権限名を指定できます
    8. 使いたい権限が分からない方は、利用目的を書いてもらうことで適切な権限を判断できます
7. 返信先
    8. 権限設定が終わった際の通知先です。

## 依頼時の手入力（≒誤入力）を減らす
同じシートの灰色の列（F列、G列）にバリデーションチェック列を用意しました。
連絡先をうっかり間違えてしまったり、選択したファイル名に何か誤って入力してしまったり、誤入力を検知します。

実際に入力チェックにつかっているスクリプトがこちらです。
https://gist.github.com/ptnaweb/136a7b5d7b958fbf727cf098c3c2ea18

FMネタなので詳細は割愛しますが、ポイントだけ記載すると、
* onEdit() を使うと、ユーザ編集時に自動的にスクリプトが実行されます
* L.22 FMファイルの一覧は別シートで管理
    * 後半で、詳しくご紹介します
* L.25～29, 83～92 は連絡先（GMail）の存在チェックなので、Gmailへの通知をしなければ不要です

## 権限発行時の手間を小さくする
こうしてスプレッドシートに記入してもらった申請データはCloudSQL経由でFileMakerに取り込んでいます。
※CloudSQL（MySQL）経由でFileMakerに取り込む方法は、[以前の投稿](https://qiita.com/hiroto_otake/items/88ee0a400f138fcf5956)をよければご参照ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16382/61925dd9-947e-760c-8ca4-25f66a1dcdbe.png)
スプレッドシートに記入してもらった、**サーバー名・ファイル名・アカウント名・目的・返信先**　が赤枠の部分に取り込まれています。

### アカウントの作成
ここまで来たら、あとは指定のファイルにアカウントを作成するだけですが、スクリプトを短くするために少しだけ工夫がしてあります。

1. 各ファイルに「アカウント作成」スクリプトを作成しておく
少し手間ですが、163ファイルすべてに「アカウント作成」スクリプトを用意しておきます。
ここでのポイントは、必ず同じスクリプト名（「アカウント作成」）にしておくことです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16382/0773d96e-d741-6ebe-8206-92b58938dde0.png)

2. 「アカウント作成ボタン」
１の仕込みをしておくことで、「アカウント作成ボタン」はシンプルに作ることが出来ます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/16382/89f0b816-c0e0-33c1-51f7-cbff38ee5c57.png)
ポイント①～③は画像内の①～③をご参照ください。
  * ①：アカウントを作成するファイル
      * ユーザに入力してもらったサーバー、ファイル名、アカウント名
  * ②：スクリプト名の指定
      * ファイル名::アカウント作成　という形式に整えています。
  * ③：スクリプト実行
      * スクリプト名を統一しておくことで、ファイルの増減を気にせず同じスクリプトが使えます。

## 情シス担当が得たメリット

9月末に社内に公開しこれまで123件の申請をしてもらいましたが、作業量は圧倒的に少なくなりました。
これだけです。

* レイアウトを開く
* 申請をチェックする
* 「アカウント作成ボタン」を押す

すでにアカウントがあるのに申請された場合や、権限変更という申請には課題が残りますが、基本的にはこれだけです。
なくなった作業を確認すると、作業の大部分を失くすことが出来たことが分かります。

* 情シス担当チーム内での情報共有のための通知
    * 「誰か対応した？」「対応しました」といった通知
* 権限を付与するファイルを開く
* アカウントに名前を入力する
    * 新しく入った方など、フルネームの分からない場合はメールで質問
* 申請者に詳細を聞き出す作業
    * 「◯◯に必要な権限一式」の詳細を確認
* 「権限を付けました」メール
    * 同時に、申請者からの「ありがとうございます」メールもカット

作ろうと思いつつ二の足を踏んでいる方の背中を押す一助となれれば幸いです。