Redmineワンポイントチェック(9): REST APIを使ってユーザーを一括登録する

2018-04-27 16:45  •  分類:  •  石原佑季子

Redmine 4.2 / RedMica 1.2以降は、CSVファイルのインポートでユーザーの一括登録に対応しています。登録方法は以下の記事をご覧ください。
Redmineにユーザーを一括登録したい(Redmine.JP)


Redmineをより便利に、効率よく使いこなすためのチェックポイントを紹介する連載記事「Redmineワンポイントチェック」の第9回は、REST APIを使ってユーザーを一括登録する方法です。


REST APIを使えばCSVファイルを読み込んだりコマンドの実行でユーザーを一括登録することができます。REST APIは、外部のアプリケーションがRedmine上の情報にアクセスできるようにするための仕組みです。

事前準備

本記事では3つの方法をご紹介いたします。

まずは、REST APIを利用するための設定を行います。本記事で紹介するいずれの方法でもREST APIを利用します。

  1. 「管理」→「設定」→「API」→「RESTによるWebサービスを有効にする」をON
  2. 「保存」をクリック

REST APIを有効にしたら、下記の方法でユーザー登録が可能になります。

【方法1】Windows用フリーソフトウェア

Windows用のフリーソフトウェアがインターネット上に公開されています。 詳しい方法は以下のページをご覧ください。

【方法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に関する情報です。

バックナンバー

この連載は毎月下旬に掲載します。「Redmine News」に登録いただくと新着記事をメールでお知らせします。
最新情報お知らせメール「Redmine News」 (Redmine.JP)


作成: 2018-04-27 16:45  •  分類: