ゲストユーザーの一括追加について

 

いつも大変お世話になっております。

アプリからゲストユーザーの追加を行いたいのですが、

以下のエラーが発生し、追加できません。対処法がわからずこちらに投稿させて頂きました。

以下エラー内容とソース

“message”:“不正なJSON文字列です。”,“id”:“1505999166-1659838939”,“code”:“CB_IJ01”

var record ={};

record ={
“guests”: [
{
code:“example.com”,
password:“p@ssword”,
timezone: “Asia/Tokyo”,
name : “東京 三郎”
}
]
}
var url = kintone.api.url(‘/k/v1/guests’);
var xmlHttp = new XMLHttpRequest();
xmlHttp.open(“POST”, url, false);
xmlHttp.setRequestHeader(‘X-Requested-With’,‘XMLHttpRequest’);
xmlHttp.setRequestHeader(‘Content-Type’,‘application/json’);
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState === 4) {
console.log(xmlHttp.response);
}};
xmlHttp.send(record);
}

以上となります。

よろしくお願い申し上げます。

変数recordに入っているJavaScriptオブジェクトを、JSONフォーマットの文字列に変換してください。

例)

var record ={};

record ={
"guests": [
{
code:"example.com",
password:"p@ssword",
timezone: "Asia/Tokyo",
name : "東京 三郎"
}
]
}

record = JSON.stringify(record); // ← JSONフォーマットの文字列に変換する
// 以下同様。

補足

厳密には、ここでいうJSONはあくまで、データフォーマットとしてのJSONですので、テキストデータをPOSTする必要があります。JavaScript内で単純に変数にJSON形式で代入すると、それはJavaScriptのObjectとなってしまうので、テキストデータではなくなってしまうのです。
kintone JavaScript API上はそれで問題ないのですが、今回はREST APIなのでテキストデータとして送ってあげる必要があります。

山口さんこんにちは。

XHRを使ってJSONを送信する場合は、

xmlHttp.send(JSON.stringify(record));

とする必要があります。

特別な理由がなければkintone.apiを使ったほうがなにかと無難です。

さらに補足ですが、JavaScript API(kintone REST API リクエスト)から実行するパターンも併記します。

こちらの方が楽で見通しもいいですし、可能であれば、こちらの方法がおすすめです。

var params = {
"guests": [
{
code: "test@example.com",
password:"p@ssword1",
timezone: "Asia/Tokyo",
name : "東京 三郎"
}
]
};

kintone.api(kintone.api.url('/k/v1/guests', true), 'POST', params,
function(resp){ // 成功時
console.log(resp);
},
function(resp){ // エラー時
console.log(resp);
});

 

xmlHttpRequestですとCSRFトークンも要しますし、皆さんおっしゃっている通りkintone.api()の利用がベターかと思います。

 

var record = {};
var token = kintone.getRequestToken();
record[" __REQUEST_TOKEN__"] = token;
record["guests"] = [{
code: "test@example.com",
password: "p@ssword1",
timezone: "Asia/Tokyo",
name: "東京 三郎"
}];