はじめに
GSuite(GoogleApps)を利用してユーザー管理をしていて、大量のデータ投入をする必要がありました。データの読み出しなどの記事はチュートリアルでよく見たのですが、登録に関してあまり記事が無かったので、何かのお役に立てればと記事を書きます。
コードを書く前に必要なこと
プロジェクトの登録
デベロッパーコンソールからプロジェクト適当な名前で作成します。
ダッシュボードに戻って、作成したプロジェクトを選択し、APIを追加します。
「Admin SDK」を有効にして、認証キーを作成してください。
認証キーが作成され、一覧に表示されるので、ダウンロードして適当な場所に保存します。
(コード例では:[自分のホームディレクトリ]/.test_secrets/ 配下に「client_secret_test.jso.json」として保存します)
だいたいこれで動かす準備ができました。
実際のコード
create.rb
# -*- coding: utf-8 -*-
import os
import httplib2
from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage
def main():
try:
import argparse
parser = argparse.ArgumentParser(parents=[tools.argparser])
flags = parser.parse_args()
except ImportError:
flags = None
# 認証情報を格納するディレクトリ「.credentials」の設定。ディレクトリが無い場合は作成
credential_dir = os.path.join(os.path.expanduser('~'), '.test_credentials')
if not os.path.exists(credential_dir):
os.makedirs(credential_dir)
# 認証ファイルのパスを設定と読み込み
credential_path = os.path.join(credential_dir, 'admin-directory_v1_test.json')
store = Storage(credential_path)
credentials = store.get()
# 認証ファイルが無い場合は作成
if not credentials or credentials.invalid:
# 使用する機能の範囲を設定
scopes = [
'https://www.googleapis.com/auth/admin.directory.user',
]
# 認証キーの設定
secret_dir = os.path.join(os.path.expanduser('~'), '.test_secrets')
if not os.path.exists(secret_dir):
os.makedirs(secret_dir)
# 認証キーから認証処理を行うクラスのインスタンスを生成
flow = client.flow_from_clientsecrets(
os.path.join(secret_dir, 'client_secret_test.json'), scopes)
# アプリケーションの名前
flow.user_agent = 'User register Test Tool'
if flags:
credentials = tools.run_flow(flow, store, flags)
else: # Python 2.6 互換用処理
credentials = tools.run(flow, store)
print('証明書を保存しました: ' + credential_path)
# 認証を行う
http = credentials.authorize(httplib2.Http())
app_admin_service = discovery.build('admin', 'directory_v1', http=http)
# 作成するユーザー情報を作成
register_data = {
'primaryEmail':'test-user@hoge.com',
'name':{
'givenName':'太郎',
'familyName':'山田',
},
'suspended':False, # アカウント停止の状態にしない
'password':'p-a-s-s-w-o-r-d',
}
# 登録実行
results = app_admin_service.users().insert(body=register_data).execute()
if(int(results['id']) > 0):
print("googleアカウントを作成完了!")
else:
print("googleアカウントを作成に失敗しました")
if __name__ == '__main__':
main()
プログラムを実行するとブラウザが立ち上がり、アクセス許可を求められますので、OKをクリックして実行します。