kintoneは業務改善プラットフォームとして注目されていますが、使い方次第ではデータベースとしても使えます。というわけで実際にkintoneのREST APIをNode-REDで使ってみました。
実際に作成したフロー
一番左のinjectノードのボタンを押すと値が送信され、functionノードでパラメータを設定させてrequestノードで送信するという流れです。functionノードで必要な値をすべて設定するので、http requestノードではメソッドをGETに設定するだけであとは何も設定しません。それではfunctionノードのの中身を見ていきます。
functionノードの中身
var query = encodeURI("field_name="+msg.payload)
var access_token = "YOUR_TOKEN";
var post_request = {
"url":"https://YOUR_DOMAIN.cybozu.com/k/v1/records.json?app=YOUR_ID&query=" + query,
"headers": {
"X-Cybozu-API-Token":access_token
}
};
return post_request;
GETですべての値を定義してrequestを行うので,functionノードでURLを設定しています。ポイントとしてはqueryの値はURLエンコードをする必要があるので、1行目でencodeURI
を使用しています。
完成したらデプロイを行い、デバッグ画面でqueryの結果が正しく出力されれば、成功です。
今回のフロー
[{"id":"3e0449cf.3b80c6","type":"inject","z":"8802b5e.96cf248","name":"","topic":"","payload":"100","payloadType":"str","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":210,"y":340,"wires":[["91875234.3ebfb"]]},{"id":"b66b7c63.64db2","type":"debug","z":"8802b5e.96cf248","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":650,"y":400,"wires":[]},{"id":"91875234.3ebfb","type":"function","z":"8802b5e.96cf248","name":"kintone query","func":"var query = encodeURI(\"field_name=\"+msg.payload)\nvar access_token = \"YOUR_TOKEN\";\nvar post_request = {\n \"url\":\"https://YOUR_DOMAIN.cybozu.com/k/v1/records.json?app=YOUR_ID&query=\" + query,\n \"headers\": {\n \"X-Cybozu-API-Token\":access_token\n }\n};\n\nreturn post_request;","outputs":1,"noerr":0,"x":380,"y":340,"wires":[["fb3637b9.b8de38"]]},{"id":"fb3637b9.b8de38","type":"http request","z":"8802b5e.96cf248","name":"","method":"GET","ret":"obj","paytoqs":false,"url":"","tls":"","proxy":"","authType":"basic","x":590,"y":340,"wires":[["38d784a5.94d10c","b66b7c63.64db2"]]},{"id":"38d784a5.94d10c","type":"http response","z":"8802b5e.96cf248","name":"","statusCode":"","headers":{},"x":770,"y":340,"wires":[]}]
参考
https://developer.cybozu.io/hc/ja/articles/202331474
https://qiita.com/zaki_taka4/items/b7c9ef62050195832d8d