Javascriptでの一括更新時に[不正なJSON文字列です]とエラーが出る

はじめまして。

Javascriptのプラグインにて、一括で更新を行いたいです。

下記の様にプログラムを組んでみたのですが、[不正なJSON文字列です]とエラーが出て更新されません。

JSONの記述も

https://developer.cybozu.io/hc/ja/articles/205821580-2016-01-10-%E3%81%AE%E5%AE%9A%E6%9C%9F%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8Bkintone-API%E6%9B%B4%E6%96%B0%E6%83%85%E5%A0%B1-Part1

を参考に合わせたつもりですが、動作しません。

 

(function() {
“use strict”;
//一覧画面を開いた時の処理
kintone.events.on([‘app.record.index.show’],
function(event) {
list_show(event);
}
);

function list_show(event) {
if (document.getElementById(‘my_index_button’) !== null) {
return;
}

var myIndexButton = document.createElement(‘button’);
myIndexButton.id = ‘my_index_button’;
myIndexButton.innerHTML = ‘一括完了’;

// ボタンクリック時の処理
myIndexButton.onclick = function() {
update_list(event);
};

kintone.app.getHeaderMenuSpaceElement().appendChild(myIndexButton);

}

function update_list(event) {

//一覧情報の取得
var record_array = [];

var records = event.records;
// 取得レコードループ
for (var i = 0; i < records.length; i++) {
var record = records[i];

var record_obj = {
“id”: record[‘レコード番号’][‘value’],
“record”: {“fin_f”: {“value”: “1”}}
};

record_array.push(record_obj);
}

var body = {
“app”: kintone.app.getId(),
“records”: record_array
};

kintone.api(kintone.api.url(‘/k/v1/records’, true), ‘PUT’, body,
function(resp) {
// success
alert(‘更新完了’);
}, function(error) {
// error
var errmsg = ‘レコード更新時にエラーが発生しました。’;
if (error.message !== undefined) {
errmsg += ‘’ + error.message;
}
alert(errmsg);

}
);

}
})();

 

 

よろしくお願い致します。

杉本憲亮さん

プログラムを動かしてみましたが、対象のフィールドが文字列の場合は正常に動作しました。

フィールド「fin_f」がチェックボックスや組織選択になっていると思います。

チェックボックスや組織選択はvalueの中身が文字列ではなく配列になっているので、

"record": {"fin_f": {"value": "1"}}

"1"の部分をフィールド「fin_f」のvalueの形式に合わせた形にしてみてください。

なお、チェックボックスの場合は以下の書き方になります。

"record": {"fin_f": {"value": ["1"]}}

lpjさん

ありがとうございます。

"record": {"fin_f": {"value": ["1"]}}

にするだけではまた別のエラーで動かず、APIのフィールド情報から「フォームで設定した値を入れる」とあったので

"record": {"fin_f": {"value": ["完了"]}}

に直したところ、動作しました。

 

ありがとうございました。

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。