Redmineワンポイントチェック(9): REST APIを使ってユーザーを一括登録する
Redmineにユーザーを一括登録したい(Redmine.JP)
Redmineをより便利に、効率よく使いこなすためのチェックポイントを紹介する連載記事「Redmineワンポイントチェック」の第9回は、REST APIを使ってユーザーを一括登録する方法です。
REST APIを使えばCSVファイルを読み込んだりコマンドの実行でユーザーを一括登録することができます。REST APIは、外部のアプリケーションがRedmine上の情報にアクセスできるようにするための仕組みです。
事前準備
本記事では3つの方法をご紹介いたします。
まずは、REST APIを利用するための設定を行います。本記事で紹介するいずれの方法でもREST APIを利用します。
- 「管理」→「設定」→「API」→「RESTによるWebサービスを有効にする」をON
- 「保存」をクリック
REST APIを有効にしたら、下記の方法でユーザー登録が可能になります。
【方法1】Windows用フリーソフトウェア
Windows用のフリーソフトウェアがインターネット上に公開されています。 詳しい方法は以下のページをご覧ください。
- RedmineのユーザーをCSVから一括登録するプログラムを作った - YoshinoriN's Memento
https://yoshinorin.net/2017/04/16/create-redmine-user-import-from-csv/
【方法2】UNIX系OSのコマンドラインを実行
LinuxやmacOSなどUNIX系OSのコマンドラインで curl コマンドを利用します。
コマンドのテンプレート:
curl -v http://redmine.example.com/users.json --user ログインID:パスワード --header 'Content-type: application/json' --data '{"user": {"login": "ログインID", "password": "パスワード", "firstname": "名", "lastname": "姓", "mail": "メールアドレス"}}'
- http://redmine.example.com の部分は実際のRedmineのURLに置き換えてください
--user
のあと指定する ログインID:パスワード には、システム管理者権限を持つユーザーのログインIDとパスワードを入力します。
実行例:
curl -v http://redmine.example.com/users.json --user admin:HRg7ih3H --header 'Content-type: application/json' --data '{"user": {"login": "akada", "password": "bXjxfDw7", "firstname": "舞", "lastname": "赤田", "mail": "akada@example.com"}}'
登録用コマンド一覧の作成方法(一例)
①表計算ソフトでログインID、パスワード、氏名、メールアドレスを記載した表を作成
②それらの文字列をつなぎ合わせてcurlコマンドのコマンドライン文字列を作成する数式を作成
="curl -v http://redmine.example.com/users.json --user admin:admin --header 'Content-type: application/json' --data '{""user"": {""login"": """ & A2 & """, ""password"": """ & B2 & """, ""firstname"": """ & C2 & """, ""lastname"": """ & D2 & """, ""mail"": """ & E2 & """}}'"
③数式をすべての行にコピーすることでコマンドの一覧が得られる
④得られたコマンドの一覧をLinuxのコマンドラインに貼り付けて実行
curl -v http://redmine.example.com/users.json --user admin:admin --header 'Content-type: application/json' --data '{"user": {"login": "akada", "password": "ryF77B24", "firstname": "舞", "lastname": "赤田", "mail": "akada@example.com"}}'
curl -v http://redmine.example.com/users.json --user admin:admin --header 'Content-type: application/json' --data '{"user": {"login": "kameda", "password": "Qwb3myJN", "firstname": "三郎", "lastname": "亀田", "mail": "kameda@example.com"}}'
curl -v http://redmine.example.com/users.json --user admin:admin --header 'Content-type: application/json' --data '{"user": {"login": "sasaki", "password": "8xyJGr7A", "firstname": "健太", "lastname": "佐々木", "mail": "sasaki@example.com"}}'
curl -v http://redmine.example.com/users.json --user admin:admin --header 'Content-type: application/json' --data '{"user": {"login": "yamaguchi", "password": "2QGHraNE", "firstname": "裕子", "lastname": "山口", "mail": "yamaguchi@example.com"}}'
curl -v http://redmine.example.com/users.json --user admin:admin --header 'Content-type: application/json' --data '{"user": {"login": "suzuki", "password": "4TFjf94j", "firstname": "良介", "lastname": "鈴木", "mail": "suzuki@example.com"}}'
【方法3】Rubyスクリプトを実行
CSVファイルを読み込んでユーザーを登録するRubyスクリプトを利用します。
スクリプト:
https://gist.github.com/vividtone/15ed9b221d4cbd54d744
あらかじめ以下のようなユーザー登録情報一覧のCSVファイルを作成します。
CSVファイルの例:
akada,password,舞,赤田,akada@example.com
kameda,password,三郎,亀田,kameda@example.com
Rubyがインストールされている環境のコンソールで実行します。
実行例:
ruby create_redmine_user.rb userlist.csv
参考情報
Redmine公式サイトのREST APIに関する情報です。
- http://www.redmine.org/projects/redmine/wiki/Rest_Users
- http://www.redmine.org/projects/redmine/wiki/Rest_api_with_curl
バックナンバー
- (8): sudoモードでセキュリティ上重要な操作前にパスワード入力を強制
- (7): Redmineのチケット更新をSlackに通知する 【プラグイン不要】
- (6): カスタムフィールドに入力した数値を集計して合計値を表示する
- (5): トラッカーを正しく使おう
- (4): ワークフローのチェックをまとめてON/OFFする
- (3): コンテキストメニューを使って複数チケットをまとめて更新する
- (2): URLに入力値を埋め込んでチケット作成のテンプレートを実現する
- (1): ユーザーは「削除」ではなく「ロック」をする