kintoneアプリからcybozu.comのユーザーを登録してみよう!

目次

今回は、JavaScript を使って kintone アプリから cybozu.com のユーザーを登録する方法について紹介したいと思います。
ユーザーマスターを kintone アプリで作成し、定期的に登録や更新することで、Excel や CSV で使わずにメンテナンスできます!
「あとチョット」な部分をユーザ管理アプリという形で実現させてみましょう。

処理の流れ

  • フォームの情報から CSV ファイルを作成する。
  • CSV ファイルをユーザインポート API を使って登録する。

フォームイメージ

まずはアプリフォームのイメージです。以下の項目を用意しておきます。

今回はこのユーザ情報を cybozu.com に登録してみましょう。

CSVデータの作成

上記のフォームデータを元に CSV を生成します。
フォームにない項目については空アイテムとして指定します。
CSV のフォーマット形式については CSV フォーマット を参照してください。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// kintone のレコード取得
const record = kintone.app.record.get().record;
// CSVの作成
let strCSV = record['ログイン名'].value;
strCSV += ',' + record['表示名'].value;
strCSV += ',sample'; // 新ログイン名
strCSV += ',password'; // パスワード
strCSV += ',' + record['姓'].value;
strCSV += ',' + record['名'].value;
strCSV += ',' + record['よみがな姓'].value;
strCSV += ',' + record['よみがな名'].value;
strCSV += ','; // 別言語での表示
strCSV += ','; // 別言語の名前を表示する言語
strCSV += ',' + record.E_mail.value;
strCSV += ',0'; // 使用状態
strCSV += ','; // 言語
strCSV += ','; // タイムゾーン
strCSV += ',' + record['電話番号'].value;
strCSV += ',' + record['内線'].value;
strCSV += ','; // 携帯
strCSV += ','; // URL
strCSV += ',' + record['従業員ID'].value;
strCSV += ','; // 入社日
strCSV += ','; // 誕生日
strCSV += ','; // メモ
strCSV += ','; // 表示優先度
strCSV += ','; // Skype名
strCSV += ','; // 削除
strCSV += ',\n';

ユーザ情報の登録

CSV ファイルを作成したら次にファイルをアップロードします。
ファイルのアップロード手順は こちら

ファイルのアップロード、ダウンロードを実行する際には、セッション認証が必要になります。

ではユーザインポート処理のコードを見てみましょう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
// FormDataにCSVを格納
const formData = new FormData();
const oBlob = new Blob([strCSV], {type: 'text/csv'});
const tokenKey = kintone.getRequestToken();
formData.append('__REQUEST_TOKEN__', tokenKey);
formData.append('file', oBlob, 'user.csv');

// CSVファイルをアップロードする
const xmlHttp = new XMLHttpRequest();
xmlHttp.open('POST', '/v1/file.json');

xmlHttp.onreadystatechange = function() {
  if (xmlHttp.readyState === 4) {
    // ファイルのアップロードが完了したらレスポンスデータからfileKeyを取得する
    const key = JSON.parse(this.responseText).fileKey;
    // fileKeyを設定してユーザを登録する
    kintone.api(kintone.api.url('/v1/csv/user'), 'POST', {fileKey: key}, (resp) => {});
  }
};
xmlHttp.responseType = 'multipart/form-data';
xmlHttp.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
xmlHttp.send(formData);

前項で作成した CSV ファイルをアップロードして、そのレスポンスから fileKey を取得します。
次に fileKey をユーザーインポート API を使用して登録しています。
このときユーザインポート API では"POST"します。通常のファイルアップデートではレコードに対して"PUT"しますが、ここでは"POST"です。
意外と間違えちゃう箇所なので注意してください。

information

この Tips は、2014 年 4 月版 cybozu.com で動作を確認しています。