はじめに
期末、半期、四半期などのタイミングでWorkatoワークスペースのコラボレーター(ユーザー)の棚卸しを行う際に、現在のユーザーのリスト構造化されたデータでを取得したい場合があります。
このような場合は、次のコードをChrome開発者ツール上で実行することでJSON形式、あるいは表形式でその結果を取得することができます。
取得した結果は、Excelやスクリプト上へ読み込んで利用することができます。
手順
1. Workatoへログインします。
2. Chrome開発者ツールを開き、コンソールへ以下のコードを入力し、実行します。
コード
変数 | 値 |
---|---|
page | ページ番号 |
per_page | 1リクエストあたりの表示件数 |
sortTerm | ソートキー |
sortDirection | 昇順(asc)・降順(desc) |
let baseUrl = 'https://app.workato.com/members.json';
let sortTerm = 'name';
let sortDirection = 'asc';
let perPage = 5;
let result = [];
// 合計ページ数を算出する
let url = baseUrl
+ '?page=1'
+ '&per_page=' + String(perPage)
+ '&sort_term=' + sortTerm
+ '&sort_direction=' + sortDirection;
let res = (await (await fetch(url)).json()).result;
let totalPages = Math.ceil(res.count / perPage);
// データを取得する
for (let i = 1; i <= totalPages; i++) {
url = baseUrl
+ '?page=' + String(i)
+ '&per_page=' + String(perPage)
+ '&sort_term=' + sortTerm
+ '&sort_direction=' + sortDirection;
res = (await (await fetch(url)).json()).result;
result = result.concat(res.items);
}
// JSON形式で出力
console.log(result);
// 表形式で出力
console.table(result);
3. 出力結果を右クリックし、「objectをコピー」をクリックします。
コピーした内容がクリップボードに格納されます。コピー後、テキストエディタ等へ貼付して利用してください。
最後に
Workatoには、Workato自身を管理するためのREST APIが用意されていますが、現在のところ残念ながらユーザーリストを出力するエンドポイントが提供されていません。このため、構造化データとしてユーザーリストが必要な場合は、一例として、本ページに記載の手順で対応することになります。また、ユーザー追加・編集・削除可能なREST APIエンドポイントも、現在のところ提供されていません。
なお、WorkatoはSAML SSOによる認証に対応しており、かつSCIMによるユーザー情報の同期に対応しています。SCIMを利用することで、ユーザー追加・編集・削除はIdPで行えるようになりますし、IdPにユーザー管理のためのREST APIが用意されていれば、IdPを介してWorkatoのユーザー管理の自動化も実現することができます。よって、もしユーザー管理を効率化したいのであれば、Workatoビルトインの認証を使い続けるのではなく、SAML SSOとSCIMで対応いただくのがベターであるといえます。
※個人的には、ユーザー管理の自動化が必要な場合はSCIMで管理してほしいというのがWorkato社の答えであると、勝手に思っています。(APIによるユーザーの追加・編集・削除ができないというのも、セキュリティ面を考慮すると合理的な判断であると考えています。ただ、ユーザーのリストくらいは出力させてほしいですが・・・)
ただし、SAML SSO + SCIMな環境においても、孤立しているユーザー(IdPには存在せずWorkatoにのみ存在するユーザー)を特定する場合や、Workato上における実際のマッピング(各ユーザーがWorkatoにおいて実際にどのグループに所属していて、どのロールが割り当てられているのか)の確認を行いたい場合は、本手順は役立つと思います。