kintone 大量のレコードを全件取得して内容を更新したい時

kintone

※現在はKintone Utility for JavaScriptは非推奨となりました
こちらをお勧めします → Kintone API 500件以上のレコード一括取得と100件以上の一括更新(ライブラリ使用なし)

またまたkintoneについてです。
kintoneでボタンを押すと全レコードを取得→年齢を計算→全レコード更新というカスタマイズをすることになったのですが、100件以上の全レコードを取得&更新というのがなかなか苦労しました。いや、知っていればもっと早くできたと思います。

試行錯誤、右往左往して結局はkintone Utility for JavaScript(ライブラリ)を使ってできました。
※kintone APIは基本的に一度に100件までのレコードしか取得、更新ができません。それ以上の処理をkintone APIでするのは私には難しかったです。。。

kintone Utility for JavaScriptの場合
◾️ライブラリの最初の設定方法はここで確認↓
「kintone Utility Library for JavaScript」の使い方
「アプリの設定 > JavaScript / CSSでカスタマイズ 」で以下のURLをアップロードして保存し、アプリの更新をします。
https://kintone.github.io/kintoneUtility/kintoneUtility.min.js

◾️全レコード取得(条件付きで取得できます)
kintoneUtility.rest.getAllRecordsByQuery (クエリ条件に合う全レコード取得)
サンプルコード(引用です)

var param = {
app: 146,
query: 'テキストフィールド != ""',
fields: ['$id', '数値フィールド'],
totalCount: true,
isGuest: false
};

kintoneUtility.rest.getAllRecordsByQuery(param).then(function(resp) {
// 成功時の処理を記載する
console.log(JSON.stringify(resp, null ,' '));
}).catch(function(error) {
// エラー時の処理を記載する
console.log(error.message);
});

◾️全てのレコード更新
kintoneUtility.rest.putAllRecords

登録できるレコードの上限はありませんが、内部的には kintoneUtility.rest.putRecordsと同様の仕組みで繰り返し処理を行っているようなので2000件ずつ登録処理を行うが、失敗した場合は対象の2000件のブロックのレコードのみロールバックされます

サンプルコード(引用です)

var records = [{
id: 2,
record: {
'フィールド1': {
value: 10000
},
'フィールド2': {
value: 'hoge'
}
}
}, {
updateKey: {
field: '更新キー',
value: 'App-012'
},
record: {
'フィールド3': {
value: 9999
},
'フィールド4': {
value: 'fuga'
}
}
}];
var param = {
app: 146,
records: records,
isGuest: false
};

kintoneUtility.rest.putAllRecords(param).then(function(resp) {
// 成功時の処理を記載する
console.log(JSON.stringify(resp, null, ' '));
}).catch(function(error) {
// エラー時の処理を記載する
console.log(error.message);
});

参考サイトはここ↓重要。他にもコードがたくさん。
kintone Utility for JavaScript を使ってみたよ

【余談(誰か聞いてください)】
最近は物忘れが早くなったと実感します。
以前に書いた文章の内容をすっかり忘れてしまっていることにびっくりします。
子育てが始まってからは一度に物事を言われてあたふたすることが多くて何やってたっけ??となり、物忘れが多くなったのはこれのせいだ!と思っているのですが子供が大きくなったら元に戻るかは疑問。不安だ。
あとMacProが急に重くなりイライラッ!

コメント

タイトルとURLをコピーしました