新規投稿
フォローする

Garoonでアカウント設定(プロフィール情報)の取得

Garoonで、以下のページの[プロフィール]情報を取得することはできますか?

アカウント設定: https://{subdomain}.cybozu.com/settings/profile

 

  • コメント: 
  • 基本情報: 表示名, 名前, よみがな, 所属組織, 優先する組織, 誕生日, 入社日, 従業員ID, タイムゾーン, 言語
  • 連絡先情報: Emailアドレス, モバイルフォン, 電話番号, 内線, Skype名
  • その他: 別言語での表示名, URL, 利用中のサービス

やりたいこと: ワークフローで申請の作成時、テキストボックスに社員番号(従業員ID)を自動セットする。

ユーザー情報のその他の項目値を取得したいので、AdminGetUserDetailByIdsではなくBaseGetUsersByIdを試してみましたが、返ってくるのは、「表示名, Emailアドレス, 電話番号, コメント」まででした。それ以外の項目は参照することができないのでしょうか?

 

 サンプルコード:

/**
* Moment.js
* https://js.cybozu.com/momentjs/2.22.1/moment.min.js
*/
(function($) {
 "use strict";
 var host = window.location.origin;
 /**
  * ログインユーザー情報の取得
  * https://developer.cybozu.io/hc/ja/articles/115003721263
  */
 var user = garoon.base.user.getLoginUser();
 console.log(user);
 // 取得した値の例
 // {
 // id: '2',
 // garoonId: '3',
 // code: 'sato',
 // name: '佐藤 昇',
 // email: 'sato@cybozu.co.jp',
 // url: 'http://cybozu.com',
 // phone: '03-0000-0000',
 // timezone: 'Asia/Tokyo',
 // language: 'ja'
 // }
 /**
  * 共通SOAPコンテンツ
  * ${XXXX}の箇所は実施処理等に合わせて置換して使用
  */
 var SOAP_TEMPLATE =
  '<?xml version="1.0" encoding="UTF-8"?>' +
  '<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">' +
   '<soap:Header>' +
    '<Action>${ACTION}</Action>' +
    '<Security>' +
     '<UsernameToken>' +
      '<Username>${USERNAME}</Username>' +
      '<Password>${PASSWORD}</Password>' +
     '</UsernameToken>' +
    '</Security>' +
    '<Timestamp>' +
     '<Created>${CREATED}</Created>' +
     '<Expires>${EXPIRES}</Expires>' +
    '</Timestamp>' +
    '<Locale>${LOCALE}</Locale>' +
   '</soap:Header>' +
   '<soap:Body>' +
    '<${ACTION}>' +
     '<parameters${ATTRIBUTE}>${PARAMETERS}</parameters>' +
    '</${ACTION}>' +
   '</soap:Body>' +
  '</soap:Envelope>';
 /**
  * ワークフロー申請の作成画面が表示されたときのイベント
  * https://developer.cybozu.io/hc/ja/articles/115000804806
  */
 garoon.events.on("workflow.request.create.show", function(event) {
  var userRequest = SOAP_TEMPLATE;
  // SOAPパラメータを構築
  userRequest = userRequest.split('${ACTION}').join('BaseGetUsersById');
  userRequest = userRequest.replace('${USERNAME}', '');
  userRequest = userRequest.replace('${PASSWORD}', '');
  userRequest = userRequest.replace('${CREATED}', '');
  userRequest = userRequest.replace('${EXPIRES}', moment().add(+9, 'hours').format('YYYY-MM-DDTHH:mm:ssZ'));
  userRequest = userRequest.replace('${LOCALE}', 'ja');
  userRequest = userRequest.replace('${PARAMETERS}', '<user_id>' + user.garoonId + '</user_id>');
  userRequest = userRequest.replace('${ATTRIBUTE}', ' xmlns=""');
  var url = host + '/g/cbpapi/base/api.csp';
  var xhr = new XMLHttpRequest();
  xhr.open('POST', url);
  xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  xhr.setRequestHeader('Content-Type', 'text/xml');
  xhr.onload = function() {
   if (xhr.status === 200) {
    // success
    console.log(xhr.responseText);
   } else {
    // error
    console.log(xhr.responseText);
   }
  };
  xhr.send(userRequest);
  console.log(userRequest);
 });
})(jQuery)
2

1件のコメント

Avatar
tomomo85

すみません、自己解決しました。

Garoon・kintoneともにUser APIが共通でつかえるのですね。

window.onload = function() {
 var host = location.origin;
 /**
  * ログインユーザー情報の取得
  * https://developer.cybozu.io/hc/ja/articles/115003721263
  */
 var user = garoon.base.user.getLoginUser();
 /**
  * ユーザーエクスポート API(JSON)
  * https://developer.cybozu.io/hc/ja/articles/202363040#step2
  */
 var params = '?codes[0]=' + user.code + '&offset=0&size=1';
 var url = host + '/v1/users.json' + params;
 var xhr = new XMLHttpRequest();
 xhr.open('GET', url, true);
 xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
 xhr.onload = function() {
 var resp = JSON.parse(xhr.responseText);
 if (xhr.status === 200) {
  $('input[name=item_1]').val(resp.users[0].employeeNumber);
 }
};
xhr.send(null);
}
2
サインインしてコメントを残してください。