これまで複数の記事で、Monacaアプリにてkintoneのデータを操作するデモアプリを解説してきました。
今回は少し趣向を変えて、サーバーサイドや手元の環境からkintoneのデータを操作してみます。サーバー側からデータをメンテナンスできるようになれば、自社システムやデータベースとの連携もできるようになるでしょう。
利用する言語
今回はNode.jsを利用します。適当なフォルダを作成し、Node.jsプロジェクトとして初期化します。
$ mkdir kintone-nodejs-demo
$ cd kintone-nodejs-demo
$ npm init -y
利用するライブラリ
kintone公式のNode.js向けライブラリ kintone-nodejs-sdk
を利用します。
$ npm i kintone-nodejs-sdk
コードを書く
ここからは index.js を作成し、そこにコードを書いていきます。まず kintone-nodejs-sdk
を読み込みます。
認証情報を記述する
今回はサーバーサイドからバッチ処理で複数データを更新する想定です。そこでkintoneのドメイン、認証情報を記述します。この認証は管理者ユーザーなどが良いでしょう。
そして認証情報をセットします。
利用するアプリを定義する
kintoneアプリのIDを決めておきます。
kintone Recordオブジェクトの定義
kintoneのデータを操作するkintone Recordオブジェクトを定義します。
データの検索・取得
kintoneを検索してデータを取得します。今回のクエリーストリングは自分のkintoneアプリに合わせて変更してください。書き方はQuery string - Kintone Developer Programにて説明されています。
内容は以下のようになります。
[
{
"運行履歴テーブル": { type: "SUBTABLE", value: [Array] },
"レコード番号": { type: "RECORD_NUMBER", value: "13" },
"運行終了": { type: "TIME", value: "18:00" },
"更新者": { type: "MODIFIER", value: [Object] },
"運転年月日": { type: "DATE", value: "2022-03-10" },
"ステータス": { type: "STATUS", value: "未提出" },
"休憩仮眠履歴テーブル": { type: "SUBTABLE", value: [] },
"立替金詳細テーブル": { type: "SUBTABLE", value: [] },
"点検事項": { type: "CHECK_BOX", value: [Array] },
"オイル補充量": { type: "NUMBER", value: "" },
"入庫メーター": { type: "NUMBER", value: "50500" },
"高速券使用枚数": { type: "NUMBER", value: "" },
"運行時間数": { type: "CALC", value: "09:00" },
"車輌番号": { type: "SINGLE_LINE_TEXT", value: "100" },
"作業者": { type: "STATUS_ASSIGNEE", value: [] },
"作成者": { type: "CREATOR", value: [Object] },
"運行開始": { type: "TIME", value: "09:00" },
"$revision": { type: "__REVISION__", value: "7" },
"更新日時": { type: "UPDATED_TIME", value: "2023-01-25T01:44:00Z" },
"出庫メーター": { type: "NUMBER", value: "51000" },
"ガソリン補充量": { type: "NUMBER", value: "" },
"運転者氏名": { type: "USER_SELECT", value: [Array] },
"立替え金合計": { type: "CALC", value: "" },
"差引走行距離": { type: "CALC", value: "-500" },
"作成日時": { type: "CREATED_TIME", value: "2022-05-23T08:59:00Z" },
"$id": { type: "__ID__", value: "13" }
},
: // 中略
{
"運行履歴テーブル": { type: "SUBTABLE", value: [] },
"レコード番号": { type: "RECORD_NUMBER", value: "2" },
"運行終了": { type: "TIME", value: "18:00" },
"更新者": { type: "MODIFIER", value: [Object] },
"運転年月日": { type: "DATE", value: "2022-03-10" },
"ステータス": { type: "STATUS", value: "未提出" },
"休憩仮眠履歴テーブル": { type: "SUBTABLE", value: [] },
"立替金詳細テーブル": { type: "SUBTABLE", value: [] },
"点検事項": { type: "CHECK_BOX", value: [Array] },
"オイル補充量": { type: "NUMBER", value: "" },
"入庫メーター": { type: "NUMBER", value: "50500" },
"高速券使用枚数": { type: "NUMBER", value: "" },
"運行時間数": { type: "CALC", value: "09:00" },
"車輌番号": { type: "SINGLE_LINE_TEXT", value: "" },
"作業者": { type: "STATUS_ASSIGNEE", value: [] },
"作成者": { type: "CREATOR", value: [Object] },
"運行開始": { type: "TIME", value: "09:00" },
"$revision": { type: "__REVISION__", value: "7" },
"更新日時": { type: "UPDATED_TIME", value: "2023-01-25T01:44:00Z" },
"出庫メーター": { type: "NUMBER", value: "51000" },
"ガソリン補充量": { type: "NUMBER", value: "" },
"運転者氏名": { type: "USER_SELECT", value: [Array] },
"立替え金合計": { type: "CALC", value: "" },
"差引走行距離": { type: "CALC", value: "-500" },
"作成日時": { type: "CREATED_TIME", value: "2022-04-15T06:50:00Z" },
"$id": { type: "__ID__", value: "2" }
}
]
更新情報の作成
取得した情報(ID、リビジョン)を使って更新情報を作成します。今回は取得した出庫メーターの値を +1000 しています。レコードの値は文字列なので、parseIntして数字にしています。この仕様はRecord - kintone Node.js SDKを参照してください。
更新する
作成した updateRecords
を使って更新処理を実行します。
レスポンスは以下のようになります。revisionが1つ上がっているはずです。
全体のコード
今回のコードです。実装時の参考にしてください。
まとめ
まとめてアップデートや削除などができるのは便利です。システム連携する際に利用できるでしょう。
kintoneアプリを自動化したり、システム連携する際にはNode.js SDKを活用してみると良さそうです。
関連