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

Posts

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

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

kintoneノード

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

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

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

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

kintoneノードの追加方法

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

Node-REDの画面から追加

  1. 右上のメニューをクリックし、[パレットの管理]を選択します。
  2. [ノードを追加]タブをクリックし、「kintone」と検索します。
  3. 「node-red-contrib-kintone」の[ノードを追加]ボタンをクリックします。
  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する。

フローの作成

  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

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

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

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

動作確認

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