kintone JavaScript APIでUser APIを使ってみよう!【ユーザーの所属組織エクスポートAPI編】

 

組織の所属ユーザーとユーザーの所属組織の取得API

2015年1月11日のアップデートでは、kintoneプラグイン用のJavaScript APIの他にUser APIが幾らか追加になりました。今回のアップデートでは、待望?の「指定した組織の所属ユーザー」、「指定したユーザーの所属と役職」を JSONで取得できるAPIが追加になりました。

kintone JavaScript APIから User APIを使ってみる

今回はこれをkintone JavaScript APIで使ってみたいと思います。

レコード登録・編集画面でログインユーザーの組織情報を取得して、フィールドコードが「組織」の文字列(1行)フィールドにセットしてみたいと思います。

kintone.events.on(['app.record.create.show', 'app.record.edit.show'],function(event){

  var loginUserCode = kintone.getLoginUser()['code']; // ログイン名を取得
  var url = 'https://{subdomain}.cybozu.com/v1/user/organizations.json'; // 所属組織取得APIのURL
  url = url + '?code=' + loginUserCode; // ログインユーザーを指定

  var headers = {'X-Cybozu-Authorization': '{auth-token}'};
  var data = '';

  kintone.proxy(url, 'GET', headers, data, function(resp){
    var record = kintone.app.record.get(); // レコード情報を取得
    record['record']['組織']['value'] = JSON.parse(resp)['organizationTitles'][0]['organization']['name']; // フィールドコードが「組織」のフィールドに取得した組織名をセット
    kintone.app.record.set(record); // レコード情報をセット
  }, function(resp){
    var errmsg = '所属組織取得時にエラーが発生しました。';
    if (resp.message !== undefined){
      errmsg += '\n' + resp.message;
    }
    alert(errmsg);
  });
});

注意事項

User APIは「kintone.api()」からはコールできないため、ちょっと裏技まがいですが、「kintone.proxy()」からコールしました。{subdomain} と {auth-token} は適用環境に合わせて差替が必要なパラメータです。ここで、裏技まがいなため {auth-token} をさらすことになりますので、運用で注意が必要になってきます。

また、今回利用した「ユーザーの所属組織エクスポートAPI」は本来リクエストヘッダとして「Content-Type」に「application/json」を指定して、リクエストボディで「code」を記載する必要があるのですが、「kintone.proxy()」のGETメソッドではリクエストボディを渡せないため、URLに入れたところうまくいったという結果論です。

まとめ

という訳で、現状結構注意事項が多いので、どうしてもの時に使うようにしましょう^^

 

追記

User APIも「kintone.api()」からコールできるようになったようで、先にお伝えした内容を書き換えると、次のようになります。他に変更点として、「kintone.api()」を使うことにより、認証情報の埋め込みが不要になったことと、レスポンスに対してJSON.parseが不要になることがあります。こちらの方が断然使いやすいですね!

kintone.events.on(['app.record.create.show', 'app.record.edit.show'],function(event){

  var loginUserCode = kintone.getLoginUser()['code']; // ログイン名を取得
  var path = '/v1/user/organizations';
  var data = {
    code: loginUserCode // ログインユーザーを指定
  };

  kintone.api(path, 'GET', data, function(resp){
    var record = kintone.app.record.get(); // レコード情報を取得
    record['record']['組織']['value'] = resp['organizationTitles'][0]['organization']['name']; // フィールドコードが「組織」のフィールドに取得した組織名をセット
    kintone.app.record.set(record); // レコード情報をセット
  }, function(resp){
    var errmsg = '所属組織取得時にエラーが発生しました。';
    if (resp.message !== undefined){
      errmsg += '\n' + resp.message;
    }
    alert(errmsg);
  });
});

同じカテゴリーの記事