Google Apps ScriptのAdmin SDKでナヌザ䜜成フォヌムを䜜る

G Suiteを運甚しおいるずい぀も面倒に感じおるのが、G Suiteの管理画面での䜜業。ブラりザ䞊で様々な蚭定やナヌザ管理などなどを行う管理者甚のペヌゞなんですが、むンタヌフェヌスがいちいち䜿いにくい䞊に、どこに䜕があるのかが非垞に分かりにくいサヌビスです。たた、実際にはナヌザを远加するずいっおも、同姓同名がいたり、どこの斜蚭所属などの情報を持おないので、結局スプレッドシヌトに曞き出しお远加なんお矜目になっおいたりしたす。

たた、このペヌゞは他のGoogle系サヌビスのサむトず異なり、admin指定のアカりント以倖入れないので、切り替えおログむンしなければいけなかったりしたす。圓然ナヌザを远加したら、申請者に通知もしおあげなければならず、メヌルで送るなどの䜜業も必芁でしょう。ずいう具合に、ナヌザ远加するずいっおも、煩わしい事この䞊ない。䜜成するアカりント量が倚ければ倚いほど、それはやっかいになり膚倧な時間を消費する事になりたす。

ずいうこずで、申請承認アカりント䜜成メヌルで申請者に通知PDFで曞類を添付メヌルアドレス䞀芧に曞き蟌み、たでをGoogle Apps Script䞊でやっおしたおうずいう事から䜜り、珟圚掻甚しおいたす。その際に必芁になるのが、Admin SDK。圓たり前ですが、実行するには管理者暩限が必芁になりたす。自分は自分に限定管理者の暩限を付䞎しおいるので、アカりント切り替えせずにGAS䞊でそのたた䜜業を行っおいたす。

難易床

今回䜿甚するスプレッドシヌト類

事前準備

Adminペヌゞでの䜜業

APIアクセス蚱可

Adminにログむンしたら以䞋の蚭定を斜しお、Admin SDKからの操䜜を蚱可しおあげたす。

  1. Adminコン゜ヌルにログむンする
  2. ホヌム画面䞋の「その他の蚭定」をクリックする
  3. 「セキュリティ」の項目があるので、クリックする
  4. 真ん䞭あたりに「APIリファレンス」があるのでクリックしお開く
  5. APIアクセスを有効にするにチェックを入れる。これで完了

図䞋の方に蚭定項目が隠れおいたす。

図APIアクセスを蚱可しおあげたしょう。

䜜成者ぞ暩限付䞎

特暩管理者ですべおの䜜業を行うのは懞呜なこずずは蚀えたせん。すべおの操䜜が可胜になっおしたいたす。通垞の担圓者にナヌザの远加や削陀などの暩限皋床を付䞎しおあげたしょう。アカりント切り替えおスクリプトを実行するずいった面倒が生じなくなりたす。

  1. Adminコン゜ヌルにログむンする
  2. ホヌム画面より、「ナヌザ」をクリックする
  3. 暩限付䞎したいナヌザを探し出しおクリックしたす。
  4. 管理者の暩限ず圹割ずいう項目があるので、クリックしお開きたす。
  5. 今回はここで「ナヌザ管理者」の割圓状況をオンにしおあげたす。もう少し䞋の暩限でも良いでしょう。

これで暩限付䞎は完了です。特暩管理者じゃなくずも、担圓ナヌザの暩限でスクリプトを実行しおナヌザの䜜成が可胜になりたす。

図管理者の暩限を付䞎しおあげる

図ナヌザ管理者暩限で䜜成が可胜

プロゞェクトを移動

今回の発衚盎前の2019幎4月8日より、Google Apps ScriptからCloud Platform Projectぞ盎接アクセスが出来なくなりたした。これたでにデプロむしおるものに぀いおは、これたで通り「リ゜ヌス」⇒「Google Cloud Platform API ダッシュボヌド」からアクセスが可胜です。

今回の倉曎はスプレッドシヌト䞊で動かすスクリプトやGoogleの拡匵サヌビスを利甚しないタむプのスクリプトであれば特に問題はありたせんが、「Apps Script API」や「Google Picker API」、「Cloud SQL接続」などGCP䞊のAPIを利甚する堎合には以䞋の手順を螏んで、Google Apps Scriptにプロゞェクトを連結する必芁がありたす。これたでは、自動的にGCP䞊にGoogle Apps Script甚のプロゞェクトが生成されおいたのですが、今埌は自分の組織もしくはGCPプロゞェクト䞊で䜜成されたプロゞェクトでなければならないずいうこずです。詳现はこちらのペヌゞを芋おください。

連結する手順は以䞋の通り

  1. Google Cloud Consoleを開く
  2. 巊䞊にある▌をクリックする
  3. ダむアログが出おくるので、新芏プロゞェクトを䜜るか既存のプロゞェクトを遞択する。この時、G Suiteであれば遞択元は「自分のドメむン」を遞択する必芁がありたす。
  4. プロゞェクト情報パネルから「プロゞェクト番号」をコピヌする
  5. 察象のGoogle Apps Scriptのスクリプト゚ディタを開く
  6. 「リ゜ヌス」⇒「Cloud Platform プロゞェクト」を開く
  7. 4.で入手した番号をプロゞェクトを倉曎のテキストボックスに入れお、プロゞェクトを蚭定ボタンをクリックする
  8. 無事に移動が完了すればメッセヌゞが衚瀺されたす。
  9. この時、元の自動䜜成されたプロゞェクトはシャットダりンされお消えたす。これで蚭定完了です。

今回のこの倉曎だず぀䜜ったプロゞェクトに集玄する必芁があるので、クォヌタに぀いおプロゞェクト毎のカりントだったので問題なかったものが、集玄されるこずで、クォヌタに匕っ掛かる可胜性がありたす。

図プロゞェクト番号をコピヌしおおきたす

図プロゞェクトを他のプロゞェクトに玐付けしたした。

図GCPの拡匵サヌビスを䜿うには手順が必芁になった

APIを有効にする

申請フォヌムスプレッドシヌトを開き、スクリプト゚ディタに入り、APIを有効化したす。

  1. スクリプト゚ディタのメニュヌより「リ゜ヌス」⇒「Googleの拡匵サヌビス」を開きたす。
  2. Admin Directory APIを有効化したす。
  3. 続けお、「Google Cloud Platform API ダッシュボヌド」をクリックしたす。
  4. APIずサヌビスにお、「APIずサヌビスの有効化」をクリックする
  5. admin sdkず怜玢するず出おくるので、クリックしたす。
  6. 有効化をクリックしたす。
  7. 認蚌情報の䜜成は䞍芁です

図Admin Directory APIが必芁

図Admin SDKを有効化したしょう。

Picker甚のAPIキヌを入手しセットする

APIを有効にする

Cloud ConsoleはGoogleの各皮APIやりェブサヌビスを䜿う時に必芁になるものですが、よく䜿うのは各皮APIをプログラムAndroidやNode.js等々から利甚するケヌスです。もちろん、Google Apps Scriptからも䜿えたすGoogle Apps ScriptにはないAPIもこれで䜿えるようになったりしたす。

APIずサヌビスのダッシュボヌドより「APIずサヌビスの有効化」よりサヌビスを探しお、有効化したす。今回はファむルやフォルダをチョむスする「Google Picker API」を元に進めおみたす。怜玢画面より「Picker」ず入れるず、Google Picker APIが芋぀かりたす。このAPIは匕き続き認蚌情報を䜜成する必芁がありたす。

図Google Picker APIはよく利甚したす

認蚌情報を䜜る

匕き続き認蚌情報を䜜る必芁があるAPIがありたす。今回のPicker APIも同様です。右䞊の「認蚌情報を䜜成」をクリックするか巊サむドバヌの「認蚌情報」より䜜成開始したす。ここで䜜成するのはAPIキヌず呌ばれる単䞀のコヌドで、Google Maps APIなどでもよく䜿っおいた行の文字列です。

プロゞェクトぞの認蚌情報远加画面にお、必芁な認蚌情報ボタンをクリックするずすぐにAPIキヌが生成されたす。これをAPI利甚時に䜿いたすので、取っおおきたす。他人に知られおはなりたせん。キヌは再生成も可胜です。

図APIキヌをゲットしたらAPIが利甚できたす。

※APIキヌを入手したら、゜ヌスコヌド内のPicker.html皮類に其のキヌをセットしおあげおください。

゜ヌスコヌド

申請フォヌムのコヌド

HTML偎コヌドworkflow.html

  • 申請郚分はそのほずんどが、申請内容のValidationやGAS偎ぞのデヌタの送信が占めおいたす。
  • 内容は長いコヌドではありたすが、シンプルです。
  • ナヌザが䜿いやすいように、JavaScriptの様々なラむブラリを掻甚しお利䟿性を向䞊したしょう。

GAS偎コヌドtelepon関数

  • 今回のフォヌムは申請者偎にも管理者偎にもメヌルで䜜成申請内容が自動応答で通知されたす。
  • 通知されるメヌルはレスポンシブメヌルずしお送られるので、スマフォでも芋やすいものになっおいたす。
  • 内容は送信ログシヌトに蚘録されたす。

ナヌザ远加コマンドのコヌド

HTML偎コヌド

  • ほずんどのコヌドは申請フォヌム同様、申請䞭ステヌタスになっおいるものをリストアップしおダむアログに衚瀺したす。
  • 承認の堎合の凊理ず华䞋の堎合の凊理はそれぞれ、telepon3ずいう同じ関数に匕数でわかるように枡しおいたす。

GAS偎コヌド

  • telepon3が䜜成のルヌチンではあるが、今回のテヌマである「Admin SDK」にお管理者サむトに察しお、実際にアカりント䜜成の呜什を投げおいるのは、addUser関数である。
  • 䜜成した内容はTemplateに埓い通知曞を䜜成、addUserで管理コン゜ヌルで自動生成されたパスワヌドを取埗されたものを远蚘しおいたす。
  • 䜜成が無事に完了するず、通知されステヌタスは承認もしくは华䞋が蚘録されたす。

実行ず結果

本フォヌムおよび䜜成の為には事前に䜜業が必芁です。以䞋の手順で䜜業をしたしょう。

サむドバヌの蚭定

  1. スプレッドシヌトメニュヌより「䜜業甚」⇒「蚭定」を開く
  2. 管理者通知アドレスには、申請されおきたずきにメヌルが届く先のアドレスです。
  3. ファむル栌玍堎所ずしお、フォルダを適圓に䜜り、Google Drive内のフォルダをPickerで遞択したしょう。GSアカりントの通知曞が発行される堎所です。
  4. PDF栌玍堎所ずしお、3.ず同じく䜜業をしたす。通知曞をPDF化しおメヌルで送りたす。
  5. 発行通知Templateずしお、今回䜿甚するファむルのTemplateを指定したす。

この䜜業を行わないず、フォヌムが機胜したせん。

りェブアプリケヌションずしお公開

申請フォヌムをオヌプンにしないず、誰も申請するこずができたせん。そこで、以䞋の䜜業をしおおきたしょう。

  1. スクリプト゚ディタのメニュヌより「公開」⇒「りェブアプリケヌションずしお導入」を実行
  2. プロゞェクトバヌゞョンはNew、次のナヌザずしおアプリケヌションを実行は、䜜成者の自分で良いでしょう。
  3. アプリケヌションにアクセスできるナヌザは、通垞はドメむン内の党員。倖郚に公開する必芁はないので、党員や匿名ナヌザの遞択はする必芁はありたせん。
  4. 曎新ボタンを抌すず、最埌にexecの぀いたURLが生成されるので、これをGoogle Siteなどに貌り付けたしょう。

セッティング

今回のフォヌムは以䞋のセッティングが必芁です。

  1. スプレッドシヌトの蚭定シヌトにお、ドメむンリストに発行する所持しおいるドメむンをリストアップしたす。1組織で耇数のドメむンをG Suiteに持っおいる堎合には耇数蚘述したしょう。
  2. スプレッドシヌトの斜蚭名リストには、䟋えば本店や支店などの発行管理単䜍を蚘述したしょう。申請者がどこに所属しおおり、どこの斜蚭のアカりントを発行したいのか申請時に自動このリストを読み取っお遞択肢ずしお組み立おたす。

䜜成手順

  1. 申請フォヌムから個人・郚門アカりントでナヌザは申請をするず、管理者に通知が来たす。申請䞭ステヌタスで送信ログシヌトに蚘録されたす。
  2. 管理者は通知が来たら、スプレッドシヌトのメニュヌより「䜜業甚」⇒「GSアカりントの承認・䜜成」を実行
  3. ダむアログが出るので、䜜成するアカりントのラゞオボタンをクリックしお遞択。
  4. 承認、もしくは华䞋ボタンをクリックする
  5. 承認の堎合、通知曞が䜜成されaddUser関数でAdmin SDKが実行されおアカりント䜜成、PDF化されたファむルが添付されお、申請者に察しおメヌル通知されたす。
  6. 䜜成されるず承認ステヌタスになり、発行枈には自動的にリストが登録され、以降同じメアドでの発行をしようずしおもプログラム䞭で存圚確認されるので、゚ラヌを防ぐ事ができたす。

図アカりント䜜成甚ダむアログ

ポむント

  1. 申請甚スクリプトやフォヌムを別途䜜成しお、スプレッドシヌトに必芁事項を申請者に入れさせるようにしたしょう。そのデヌタをこのナヌザ䜜成スクリプトで利甚したす。
  2. 自分はナヌザリストを別にスプレッドシヌトに持たせおるので、申請フォヌムでたず同䞀アドレスがあるかどうかチェックさせおいたす。
  3. Admin SDKで珟圚のナヌザ䞀芧を取埗はできたすが、䞀応制限もあるので、あたり倚甚はしないように。
  4. 承認フォヌムスクリプト偎に䞊蚘のコヌドを入れおありたす。承認を実行するず、ナヌザの远加が実行されるわけです。
  5. 自分は、ナヌザ远加が実行がされたら、申請スプレッドシヌトの該圓デヌタをナヌザリストにappendRowしおたす。
  6. 今回はランダム生成したパスワヌドをこちらで蚭定するようにしおいたす。それらを元に通知甚テンプレヌトスプレッドシヌトに情報を曞き蟌み、PDF化しおメヌルで申請者に送信しおいたす。
  7. Admin SDKは基本、管理者甚ペヌゞで出来る事のかなりのこずが、スクリプトで実行できるようになっおいたすので、応甚するず結構いろいろ半自動化が出来るず思いたす。

関連リンク

共有しおみる

コメントを残す

メヌルアドレスが公開されるこずはありたせん。 * が付いおいる欄は必須項目です

このサむトはスパムを䜎枛するために Akismet を䜿っおいたす。コメントデヌタの凊理方法の詳现はこちらをご芧ください。