This request has already been treated.

  1. K_M95
Changes in body
Source | HTML | Preview
@@ -1,537 +1,537 @@
**【更新情報】**
2019/03/17 複数件追加の処理を追記
2018/10/27 PHPの処理を追記
2018/10/22 記事公開
---
# はじめに
[前回の記事](https://qiita.com/RyBB/items/08cf511f1dbce6cf76bf) の続きです。
連載記事一覧
||タイトル|
|------------------|--------------------------------------|
|0|[kintone環境の取得方法 (開発者ライセンス)](https://qiita.com/RyBB/items/73c50f1751ad137ba410)|
|1|[kintoneの使い方 (データベース編)](https://qiita.com/RyBB/items/daabb9b60d804ee2242f)|
|2|[kintone REST API について (共通事項編)](https://qiita.com/RyBB/items/8f6ca0a0e13d5fc42759)|
|3|[kintone REST API について (GET編)](https://qiita.com/RyBB/items/08cf511f1dbce6cf76bf) |
|4|[kintone REST API について (POST編)](https://qiita.com/RyBB/items/94c13ca56887558bb227) ← 本記事|
今回はREST APIを使って、kintoneにデータを **登録** する方法について説明します!
# レコード1件を登録
とりあえず、レコード1件 登録する方法について説明します。
文字列1行フィールド (フィールドコード:text) でやります。
## 共通項目
レコード1件を登録するための共通項目 (共通項目については[こちら](https://qiita.com/RyBB/items/8f6ca0a0e13d5fc42759)) は、
* URI
* **https://(サブドメイン名).cybozu.com/k/v1/record.json**
* メソッド
* **POST**
* ヘッダー
* **APIトークン認証** (APIトークン発行時に「レコード追加」にチェックをしてください)
* **Content-Type: applicatioin/json**
* リクエストパラメータ
* **アプリID: 100**
* ~~**レコードID: 1**~~ (POSTの場合は必要ありません)
* <font color="red">**レコード情報**</font> ※初登場!(↓で説明します)
となります。
### レコード情報
POST (PUT) の場合、**どんなレコード情報** で登録(更新)するのか指定する必要があります!
今回であれば「textというフィールドにどんな文字列を入れたいか」です。
それを record オブジェクトで指定します。kintone独自の書き方になるのでぜひ覚えてください!!
```javascript
// 一般的な書き方
let obj = {
'record': {
'フィールドコード': {
'value': '(挿入したい値)'
}
}
};
// 今回の例だと
let obj = {
'record': {
'text': {
'value': 'sample text'
}
}
};
```
こんな形で書きます。
ドロップダウンやチェックボックスなど選択肢系のやつは、
valueの値をフィールドの選択肢にある値にしないとエラーになるのでご注意ください!
## 実装
### コマンドライン (curlコマンド)で実行
コマンドラインからレコードを1件登録する場合は、以下のコマンドとなります。
```bash
# Windows(PowerShell)の場合
curl.exe -X 'POST' "https://(サブドメイン名).cybozu.com/k/v1/record.json" `
-H 'X-Cybozu-API-Token: YOUR_TOKEN' `
-H 'Content-Type: application/json' `
-d '{"app":100,"record":{"text":{"value":"sample text"}}}'
# Mac(ターミナル)の場合
curl -X 'POST' 'https://(サブドメイン名).cybozu.com/k/v1/record.json' \
--H {'X-Cybozu-API-Token: YOUR_TOKEN' \
+-H 'X-Cybozu-API-Token: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"app":100,"record":{"text":{"value":"sample text"}}}'
```
### JavaScript (Node.js) で実行
Node.jsでレコードを1件登録する場合は、以下のコードとなります。
※ RESTAPIのリクエストに requestモジュールを利用しています。
```javascript
const request = require('request');
let obj = {
'app': 100,
'record': {
'text': {
'value': 'sample text'
}
}
};
let params = {
url: 'https://(サブドメイン名).cybozu.com/k/v1/record.json',
method: 'POST',
json: true,
headers: {
'X-Cybozu-API-Token': 'YOUR_TOKEN',
'Content-Type': 'application/json',
},
body: obj,
};
request(params, function(err, resp, body) {
if (err) {
console.log(err);
return;
}
console.log(body);
});
```
### Python で実行
Pythonでレコードを1件登録する場合は、以下のコードとなります。
※ RESTAPIのリクエストに requestsモジュールを利用しています。
```python
#!/usr/bin/python
# _*_ coding: utf-8 _*_
import requests
URL = "https://(サブドメイン名).cybozu.com/k/v1/record.json"
PARAMS = {
"app": 100,
"record": {
"text": {
"value": "sample text"
}
}
}
API_TOKEN = "YOUR TOKEN"
def post_kintone(url, api_token, params):
"""kintoneにレコードを1件登録する関数"""
headers = {"X-Cybozu-API-Token": api_token, "Content-Type" : "application/json"}
resp = requests.post(url, json=params, headers=headers)
return resp
if __name__ == "__main__":
RESP = post_kintone(URL, API_TOKEN, PARAMS)
print(RESP.text)
```
### Go で実行
Goでレコードを1件登録する場合は、以下のコードとなります。
```go
package main
import (
"fmt"
"net/http"
"io/ioutil"
"bytes"
)
func main() {
APPID := "100"
url := "https://(サブドメイン名).cybozu.com/k/v1/record.json"
jsonStr := `{"app":` + APPID + `, "record": {"text": {"value": "sample text"}}}`
req, _ := http.NewRequest(
"POST",
url,
bytes.NewBuffer([]byte(jsonStr)),
)
req.Header.Set("X-Cybozu-API-Token", "YOUR_TOKEN")
req.Header.Set("Content-Type", "application/json")
client := new(http.Client)
resp, _ := client.Do(req)
defer resp.Body.Close()
response, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(response))
}
```
### PHPで実行
PHPでレコードを1件登録する場合は、以下のコードとなります。
```php5
<?php
$url = 'https://(サブドメイン名).cybozu.com/k/v1/record.json';
$headers = [
'X-Cybozu-API-Token: YOUR TOKEN',
'Content-Type: application/json'
];
$body = [
'app' => 100,
'record' => [
'text' => [
'value' => 'sample text'
]
]
];
// JSONに変換
$json = json_encode($body);
// 初期化
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
$response = curl_exec($curl);
echo $response;
curl_close($curl);
```
## レスポンス
レスポンスは非常にシンプルで
```javascript
{"id":"2", "revision":"1"}
```
と返ってきます。
idは登録したレコードID (今回だとレコードID:2として登録している)、
revisionは更新履歴のようなものです。
# レコード複数件を登録
レコードを複数件登録する方法について説明します。
文字列1行フィールド (フィールドコード:text) でやります。
## 共通項目
レコード複数件を登録するための共通項目 (共通項目については[こちら](https://qiita.com/RyBB/items/8f6ca0a0e13d5fc42759)) は、
* URI
* **https://(サブドメイン名).cybozu.com/k/v1/records.json**
* メソッド
* **POST**
* ヘッダー
* **APIトークン認証** (APIトークン発行時に「レコード追加」にチェックをしてください)
* **Content-Type: applicatioin/json**
* リクエストパラメータ
* **アプリID: 100**
* **レコード情報**
となります。
### レコード情報
登録したいレコードが複数件ある場合は recordss として配列で指定します。
詳しい書き方は [こちら](https://developer.cybozu.io/hc/ja/articles/202166160#step2) をご覧ください。
```javascript
let obj = {
'records': [{
'text': {
'value': 'sample text1'
}
},
{
'text': {
'value': 'sample text2'
}
},
{
'text': {
'value': 'sample text3'
}
}]
};
```
それぞれバラバラにレコード情報を記述できるので、
2つ目だけさらに別フィールドも、とかも可能です。
```javascript
let obj = {
'records': [{
'text': {
'value': 'sample text1'
}
},
{
'text': {
'value': 'sample text2'
},
'text2': {
'value': 'sample text2-1'
}
},
{
'text': {
'value': 'sample text3'
}
}]
};
```
## 実装
### コマンドライン (curlコマンド)で実行
コマンドラインからレコードを複数件登録する場合は、以下のコマンドとなります。
```bash
# Windows(PowerShell)の場合
curl.exe -X 'POST' "https://(サブドメイン名).cybozu.com/k/v1/records.json" `
-H 'X-Cybozu-API-Token: YOUR_TOKEN' `
-H 'Content-Type: application/json' `
-d '{"app":100,"records":[{"text":{"value":"sample text"}},{"text":{"value":"sample text2"}}]}'
# Mac(ターミナル)の場合
curl -X 'POST' 'https://(サブドメイン名).cybozu.com/k/v1/records.json' \
-H {'X-Cybozu-API-Token: YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"app":100,"records":[{"text":{"value":"sample text"}},{"text":{"value":"sample text2"}}]}'
```
### JavaScript (Node.js) で実行
Node.jsでレコードを複数件登録する場合は、以下のコードとなります。
※ RESTAPIのリクエストに requestモジュールを利用しています。
```javascript
const request = require('request');
let obj = {
'app': 100,
'records': [{
'text': {
'value': 'sample text1'
}
},
{
'text': {
'value': 'sample text2'
}
}]
};
let params = {
url: 'https://(サブドメイン名).cybozu.com/k/v1/records.json',
method: 'POST',
json: true,
headers: {
'X-Cybozu-API-Token': 'YOUR_TOKEN',
'Content-Type': 'application/json',
},
body: obj,
};
request(params, function(err, resp, body) {
if (err) {
console.log(err);
return;
}
console.log(body);
});
```
### Python で実行
Pythonでレコードを複数件登録する場合は、以下のコードとなります。
※ RESTAPIのリクエストに requestsモジュールを利用しています。
```python
#!/usr/bin/python
# _*_ coding: utf-8 _*_
import requests
URL = "https://(サブドメイン名).cybozu.com/k/v1/records.json"
PARAMS = {
"app": 100,
"records": [{
"text": {
"value": "sample text1"
}
},
{
"text": {
"value": "sample text2"
}
}]
}
API_TOKEN = "YOUR TOKEN"
def post_kintone(url, api_token, params):
"""kintoneにレコードを複数件登録する関数"""
headers = {"X-Cybozu-API-Token": api_token, "Content-Type" : "application/json"}
resp = requests.post(url, json=params, headers=headers)
return resp
if __name__ == "__main__":
RESP = post_kintone(URL, API_TOKEN, PARAMS)
print(RESP.text)
```
### Go で実行
Goでレコードを複数件登録する場合は、以下のコードとなります。
```go
package main
import (
"fmt"
"net/http"
"io/ioutil"
"bytes"
)
func main() {
APPID := "100"
url := "https://(サブドメイン名).cybozu.com/k/v1/records.json"
jsonStr := `{"app":` + APPID + `, "records": [{"text": {"value": "sample text"}}, {"text": {"value": "sample text2"}}]}`
req, _ := http.NewRequest(
"POST",
url,
bytes.NewBuffer([]byte(jsonStr)),
)
req.Header.Set("X-Cybozu-API-Token", "YOUR_TOKEN")
req.Header.Set("Content-Type", "application/json")
client := new(http.Client)
resp, _ := client.Do(req)
defer resp.Body.Close()
response, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(response))
}
```
### PHPで実行
PHPでレコードを複数件登録する場合は、以下のコードとなります。
```php5
<?php
$url = 'https://(サブドメイン名).cybozu.com/k/v1/records.json';
$headers = [
'X-Cybozu-API-Token: YOUR TOKEN',
'Content-Type: application/json'
];
$body = [
'app' => 100,
'records' => [
'text' => [
'value' => 'sample text'
],
'text' => [
'value' => 'sample text2'
]
]
];
// JSONに変換
$json = json_encode($body);
// 初期化
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_POSTFIELDS, $json);
$response = curl_exec($curl);
echo $response;
curl_close($curl);
```
## レスポンス
レスポンスは非常にシンプルで
```javascript
{"ids":["1", "2"], "revisions":["1", "1"]}
```
とそれぞれ配列で返ってきます。
# おわりに
kintone REST API のPOST処理を4種類の方法で試してみました。
前回の [共通事項編](https://qiita.com/RyBB/items/8f6ca0a0e13d5fc42759) 、[GET編](https://qiita.com/RyBB/items/08cf511f1dbce6cf76bf#javascript-nodejs-%E3%81%A7%E5%AE%9F%E8%A1%8C)と合わせて読むとより良いかもです!
とりあえず、4部構成が全て終わりました!
連載記事一覧
||タイトル|
|------------------|--------------------------------------|
|0|[kintone環境の取得方法 (開発者ライセンス)](https://qiita.com/RyBB/items/73c50f1751ad137ba410)|
|1|[kintoneの使い方 (データベース編)](https://qiita.com/RyBB/items/daabb9b60d804ee2242f)|
|2|[kintone REST API について (共通事項編)](https://qiita.com/RyBB/items/8f6ca0a0e13d5fc42759)|
|3|[kintone REST API について (GET編)](https://qiita.com/RyBB/items/08cf511f1dbce6cf76bf) |
|4|[kintone REST API について (POST編)](https://qiita.com/RyBB/items/94c13ca56887558bb227) ← 本記事|
それでは!≧(+・` ཀ・´)≦