Node-RED から kintone のレコードを操作するノード(node-red-contrib-kintone)を作った

May 11, 2019

Node-RED から kintone のレコードを操作するノード(非公式)を作成しました。

この記事では、node-red-conrib-kintone(以降、kintone ノード)の追加方法と、利用例を説明します。

kintone ノード

kintone ノードでは、kintone レコードを取得(GET)、登録(POST)または更新(PUT)ができます。

ノードのプロパティで、kintone 環境の情報、操作するメソッドやリクエストパラメータを指定します。下図は、メソッドが GET の場合のプロパティです。 02

内部的には、kintone REST API の /k/v1/records.json を呼び出しているため、ノードに指定するプロパティは、次の API 仕様にしたがっています。

kintone への接続情報(ドメイン、kintone のログイン名、ログインパスワード)は、ノードの鉛筆マークから設定します。 01

kintone ノードの追加方法

公式のノードの追加にあるとおり、次のいずれかの方法で追加します。

Node-RED の画面から追加

  1. 右上のメニューをクリックし、[パレットの管理]を選択します。
  2. [ノードを追加]タブをクリックし、「kintone」と検索します。
  3. 「node-red-contrib-kintone」の[ノードを追加]ボタンをクリックします。 03
  4. 確認ダイアログが表示されるので、[追加]ボタンをクリックします。

npm install で追加

Node-RED のユーザーディレクトリ(~/.node-red)にインストールします。

cd ~/.node-red
npm install node-red-contrib-kintone

利用例(POST)

定期的にセンサから取得した値を kintone へレコード登録するフローを作成します。

完成イメージ

フローの大まかな流れは下図のとおりです。

  1. Node-RED の http request ノードで、センサの REST API を実行し、センシングデータを取得する。
  2. 取得したセンシングデータを kintone のレコード形式に整形する。
  3. kintone ノードを使って kintone に POST する。

04

フローの作成

  1. 次のノードをエディタ上に追加します。

    ノード概要
    inject(タイムスタンプ)ノードが発火するタイミングを指定する。今回は定期実行なのでタイムスタンプノードを用いる。
    http requestセンサのデータを取得するため、REST API を実行するノード。
    function「http request」で取得したデータを kintone レコード一括登録 API のリクエストパラメータ(records)に整形する。
    kintone「function」で整形したデータを kintone に登録する。
    debug(msg.payload)kintone からのレスポンス結果をデバッグ出力する。
  2. それぞれのノードを次のように設定します。

    • inject(タイムスタンプ)

      プロパティ
      ペイロード日時
      繰り返し指定した時間間隔、日時。時間間隔、曜日、時間は任意。
    • http request

      プロパティ
      メソッドGET
      URLセンシングデータを取得する API
      認証API の認証方式に従う
      出力形式JSON オブジェクト
    • function

      プロパティ
      コード下記参照。

      データが入っているオブジェクトはセンシングデータを取得する APIの仕様によるので API の仕様に合わせること。重要なのは、次の2つです。

      • msg.payloadkintone レコード一括登録 API のリクエストパラメータ(records)の形式になっていること

      • return msgmsg の内容を次の kintone ノードに渡していること。

        var date = new Date();
        var sensor = msg.payload.<データオブジェクト>;
        
        msg.payload = [
          {
            "date": { "value": date},
            "temp": { "value": sensor.temp },
            "co2": { "value": sensor.co2 },
            "humid": { "value": sensor.humid },
            "dust": { "value": sensor.dust}
          }
        ];
        return msg;
    • kintone

      05

      プロパティ
      設定ノードの鉛筆マークから、追加したい kintone の環境を設定する
      メソッドPOST
      アプリケーション IDデータを登録する kintone のアプリケーションID
      レコード空の場合、前のノードのmsg.payloadの値を用いるので、空白にする
    • デバッグ

      プロパティ
      対象msg.payload
      出力先デバッグウィンドウ
  3. ノードを下図のように接続します。 06

  4. 右上の[デプロイ]ボタンをクリックしてデプロイします。

動作確認

  1. inject(タイムスタンプ)ノードの[■]ボタンをクリックして実行します。
  2. 実行後、レスポンスがデバッグウィンドウに表示されます。 07 kintone にもレコードが登録されています。 08

以上。