4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【つかってみた】kintone Utility for JavaScript が 廃止予定らしいので、kintone JS SDK の利用を強烈に推してみる

Last updated at Posted at 2019-07-17

こちらの記事で紹介している kintone JS SDK ですが、新しくrest-api-clientがリリースされて、JS SDKは非推奨になっています。ご注意ください。
https://github.com/kintone/kintone-js-sdk/

【Tips公開】kintone JS SDK (2019/03/29)でアナウンスの通り、2019年3月にkintoneのレコードを取得する kintone REST API のラッパーライブラリ kintone JS SDKがリリースされました。

こちらに記載の通り

「kintone JS SDK」とは、以前リリースされた「kintone Node.js SDK(β)」や「kintoneUtility」の後継となる SDK です。

上記2つのライブラリの後継 と公式にうたわれていますし、kintoneUtility 何よりGitHubのリポジトリに廃止予定とあります。

kintone Utility for JavaScript (Deprecated)

何か ~SDK は 外部からproxy等を利用して kintone API を叩く用と勘違いしている方(私も含め)もいるかもしれませんが、そう言う訳ではありませんので、これからはどんどん使いましょうと自戒も込めて kintoneUtility の代わりにつかってみました。

利用準備

簡単に始めるには、GitHubからzipファイルをダウンロードして、解凍した中にある kintone-js-sdk.min.js を取り出して利用します。

手順

kintoneカスタマイズ用の環境を準備

ローカルにkintoneカスタマイズの環境を作ります。必要無い方は飛ばしてください。
Node.jsは導入済みの前提です。

  1. 開発用のディレクトリを作成します。 mkdir my-project
  2. cd my-project
  3. npm init -y 初期化します。
  4. npm install --save-dev @babel/core @babel/cli Babelトランスパイラをインストールします。
  5. npm install @babel/preset-env --save-dev 最新のJavaScriptを利用できる様にセットアップします。

kintone JS SDK ライブラリを取得

  1. GitHubからダウンロード
  2. zipファイルを解凍
  3. distディレクトリの kintone-js-sdk.min.js をカスタマイズするプロジェクトのソースファイルと同じディレクトリに保存します

ソースコード

そのままでは動作しないかもです。動作するブラウザに応じて変換してください。

kintone.events.on('app.record.index.show', (event) => {
  const kintoneRecord = new kintoneJSSDK.Record()
  const appId = kintone.app.getId()
  const totalCount = true

  //**
  // * getRecords(appId, query, fields, totalCount)
  // */
  let getAllRec = () => {
    const query = '$id <= "50"  order by $id desc limit 10'
    const fields = []
    kintoneRecord.getRecords(appId, query, fields, totalCount).then((rsp) => {
      console.log(rsp)
    }).catch((err) => {
      console.log(err.get())
    })
  }

  //**
  // * getAllRecordsByQuery(appId, query, fields, totalCount)
  // */
  let getAllRecByQ = () => {
    const query = '$id <= "10000" order by $id desc'
    const fields = []
    kintoneRecord.getAllRecordsByQuery(appId, query, fields, totalCount).then((rsp) => {
      console.log(rsp)
    }).catch((err) => {
      console.log(err.get())
    })
  }

  //**
  // * getAllRecordsByCursor(option)
  // */
  let getAllRecByCur = () => {
    const option = {
      app: appId
    }
    kintoneRecord.getAllRecordsByCursor(option).then((rsp) => {
      console.log(rsp)
    }).catch((err) => {
      console.log(err.get())
    })
  }

  getAllRec()
  getAllRecByQ()
  getAllRecByCur()

})

とりあえずAPIを叩いてみる

getRecords(appId, query, fields, totalCount) 関数で複数レコードを取得してみます。

1. 最初にJSSDKのインスタンスを取得します。
kintone内部からAPIを叩く場合は、引数のkintoneコネクションオプションは必要無いです。

// without connection, module will use session authentication of kintone
var kintoneRecord = new kintoneJSSDK.Record();

2. お決まりの、アプリIDをセット。kintone.app.getId()関数を使います。

3. クエリを設定。getRecords は limit が使えます。


  const kintoneRecord = new kintoneJSSDK.Record()  1.

  const appId = kintone.app.getId() // 2.

  const query = '$id <= "50"  order by $id desc limit 10' // 3.

レコード一括取得してみる

getAllRecordsByQuery(app, query, fields, totalCount) 関数を使って、レコード一括取得してみます。

getAllRecordsByQuery は クエリに limit や offset が 使えないので注意です。
一度に取得できるレコード上限の500件を超えてレコードを取得できます。

Number of records can be retrieved at once is greater than the default limitations


query = '$id <= "10000" order by $id desc'

カーソル関数をつかってみる

本日リリースの kintone js SDK v0.4.0 でカーソルに対応した getAllRecordsByCursor(option) 関数が用意されたので早速使ってみました。

ここの記事を見るとカーソルは面倒だなと思っていましたが、js sdk に用意された getAllRecordsByCursor は、カーソルを意識する事無く使い勝手は良いなと感じました。

全件取得の時はアプリIDを渡すだけです。getAllRecords系と違って、引数の渡し方が違うので注意です。


    const option = {
      app: appId
    }

まとめ

  • JS SDK はkintone内部のJSで使う時には、認証情報とかセットしなくても良いので、kintoneUtilityの代わりにどんどん使ってOK
  • 一括取得時に再帰とか、カーソルとか考えなくてOK

改めて便利だなと感じました。

追記

【kintone JS SDK】カーソルAPIの対応と今後の開発計画について
に 2019年8月末 リリースの v0.5.0 よりメソッドの引数の渡し方が、今回のカーソル関数と同様にシングルオブジェクトに変更される様です。

参考リンク

設定ファイル

package.json
{
  "name": "test-sdk",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "build": "babel src -d lib",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "kazuhiro yoshida",
  "license": "MIT",
  "devDependencies": {
    "@babel/cli": "^7.5.0",
    "@babel/core": "^7.5.4",
    "@babel/preset-env": "^7.5.4"
  }
}
.babelrc
{
    "presets": ["@babel/preset-env"]
}
4
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?