kintoneのカスタマイズ効率をあげよう7 – @kintone/rest-api-client

Photo by Cookie the Pom on Unsplash

はじめに

kintoneのカスタマイズ効率をあげよう6 – 即時関数とStrictモードの続きです。

今回はこれまで構築してきた環境で@kintone/rest-api-clientを利用します。kintoneのREST APIはシンプルなのでaxiosなどのHTTP Clientを利用するのと比べてそれほどメリットを感じないかもしれません。そんなことはまったくなく、とても便利なので最初にメリットを紹介します。

メリット1. TypeScript対応

レコードフィールドなどの型が@1.6.0から提供されるようになりました。これによりさらなる効率UPが見込めます。

ただし、現在は@kintone/dts-genのように型定義ファイルを自動生成できないこと、@kintone/dts-genが生成する型定義ファイルと互換性がありません。Issueとして登録されているのでこちらの進捗を期待したいです。

例えば取得するレコードの型を定義することでこんな入力が可能になります。

型定義も入力補完されるのでそれほど手間ではないです。が、やっぱり自動生成したい。

レコード取得など@kintone/rest-api-clientの関数や引数も入力補完されます。

メリット2. 便利な関数

レコード数に上限のない取得/追加/更新/削除が可能です。UPSERT(レコードがあれば更新、なければ追加)が利用できます。かなり便利です。

メリット3. 様々な認証に対応

セッション認証、パスワード認証、Basic認証、クライアント証明書、APIトークン、OAuthトークンに対応しています。完璧!

@kintone/rest-api-clientのインストール

> npm install --save @kintone/rest-api-client

利用方法

利用方法の詳細は以下のURLを参考にしてください。

@kintone/rest-api-clientの利用

今回はカスタマイズを適用したアプリのレコード全件を取得し、会社名リストを作成します。アプリはこれまで同様アプリストアの顧客リストを利用します。

index.tsの内容を以下の内容に変更します。


import {
  KintoneRestAPIClient,
  KintoneRecordField,
} from "@kintone/rest-api-client";

const client = new KintoneRestAPIClient();

// @kintone/rest-api-clientの型
// 現時点では手動生成する必要がある
type MyAppRecord = {
  $id: KintoneRecordField.ID;
  $revision: KintoneRecordField.Revision;
  FAX: KintoneRecordField.SingleLineText;
  TEL: KintoneRecordField.SingleLineText;
  メールアドレス: KintoneRecordField.SingleLineText;
  レコード番号: KintoneRecordField.RecordNumber;
  会社ロゴ: KintoneRecordField.File;
  会社名: KintoneRecordField.SingleLineText;
  住所: KintoneRecordField.SingleLineText;
  作成日時: KintoneRecordField.Creator;
  作成者: KintoneRecordField.CreatedTime;
  備考: KintoneRecordField.MultiLineText;
  担当者名: KintoneRecordField.SingleLineText;
  更新日時: KintoneRecordField.UpdatedTime;
  更新者: KintoneRecordField.Modifier;
  部署名: KintoneRecordField.SingleLineText;
  郵便番号: KintoneRecordField.SingleLineText;
  顧客ランク: KintoneRecordField.Dropdown;
};

// @kintone/dts-genで生成した型を利用
interface DetailEvent {
  appId: number;
  record: kintone.types.SavedFields;
  recordId: number;
  type: string;
}

kintone.events.on("app.record.detail.show", async (event: DetailEvent) => {
  const response = await client.record.getRecords<MyAppRecord>({
    app: event.appId,
  });
  const companyNames = response.records.map((record) => record.会社名.value);
  console.log(companyNames);
});

アプリに適用

適用手順がわからない人は過去の記事を再確認してください。また、適用結果は省略します。

ここまでの設定

ここまでの設定は以下にあります。
https://github.com/potaracom/kintone-customize-template6

おわりに

本シリーズはこれにて終了です。最後までお付き合いいただきありがとうございました。皆さんのカスタマイズ効率が少しでも上がっていれば幸いです。

この記事を書いた人