カテゴリー内の他の記事

レコードの登録(POST)

フォローする

Index

レコードの登録(1件)

レコードの追加権限のあるユーザーが、1件のレコードを登録できます。

  • 必須項目が設定されている場合には、その値をリクエストに含めてください。

HTTP メソッド

POST

URI

https://(サブドメイン名).cybozu.com/k/v1/record.json

ゲストスペース内のアプリの場合

https://(サブドメイン名).cybozu.com/k/guest/(スペースのID)/v1/record.json 

アクセス権

  • APIの実行には、次の権限が必要です。
    • レコードの追加権限
    • 値を登録するフィールドの編集権限
  • 次のフィールドに値を登録する場合、APIの実行には、アプリの管理権限が必要です。
    • 作成者
    • 更新者
    • 作成日時
    • 更新日時

リクエストプロパティ

パラメータ名 指定する値 必須 説明
app 数値又は文字列 必須 アプリの ID を指定します。
record Object 省略可 レコードの情報(フィールドコードとフィールドの値)をオブジェクトで指定します。
  • フィールド値の仕様についてはフィールドの形式により異なります。 詳細については フィールド形式をご確認ください。
  • 省略した場合は、全フィールドの値が初期値で登録されます。
  • 存在しないフィールドコードを指定した場合、その部分は無視されます。
リクエストボディの構造

リクエストの例

リクエストヘッダ

POST /k/v1/record.json HTTP/1.1
Host: example.cybozu.com:443
X-Cybozu-Authorization: QWRtaW5pc3RyYXRvcjpjeWJvenU=
Authorization: Basic QWRtaW5pc3RyYXRvcjpjeWJvenU=
Content-Type: application/json
    • Content-Type に application/json を指定して下さい。 指定しない場合は JSON が解釈できないため、実行時エラーとなります。

ボディ

アプリ番号「1972」のアプリに以下のレコード追加する場合

フィールドの形式 フィールドコード
文字列(1行) 文字列__1行 テスト
文字列(複数行) 文字列__複数行 テスト\nテスト2
数値 数値 20
日時 日時 2014-02-16T08:57:00Z
チェックボックス チェックボックス sample1、sample2
ユーザー選択 ユーザー選択 sato ※ログイン名を指定
ドロップダウン ドロップダウン Sample1
リンク リンク_ウェブ https://www.cybozu.com
テーブル Table  
テーブル内の 文字列1行 テーブル文字列 テスト

レスポンスの例

登録したレコードのレコードIDとリビジョンが返されます。

JavaScriptサンプル

kintone REST API

XMLHttpRequest

レコードの一括登録

レコードの追加権限のあるユーザーが、複数のレコードを一括で登録できます。

  • 一度に登録できるレコードは 100 件までです。
  • 必須項目が設定されている場合には、その値をリクエストに含めてください。
  • リクエストの records パラメータで指定した順番でレコードを登録します。またレスポンスのレコードIDの順序もその順番に対応します。
  • 一括登録に失敗すると、リクエストに含まれるレコードの処理はすべてキャンセルされます。

HTTP メソッド

POST

URI

https://(サブドメイン名).cybozu.com/k/v1/records.json

ゲストスペース内のアプリの場合

https://(サブドメイン名).cybozu.com/k/guest/(スペースのID)/v1/records.json 

アクセス権

  • APIの実行には、次の権限が必要です。
    • レコードの追加権限
    • 値を登録するフィールドの編集権限
  • 次のフィールドに値を登録する場合、APIの実行には、アプリの管理権限が必要です。
    • 作成者
    • 更新者
    • 作成日時
    • 更新日時

リクエスト

パラメータ名 指定する値 必須 説明
app 数値又は文字列 必須 アプリのIDを指定します。
records 配列
(Object)
必須 登録するレコードの情報を指定します。 本パラメータの値には、recordオブジェクトの配列を記述します。
配列の中にレコードの情報(フィールドコードとフィールドの値)をオブジェクトで指定します。
  • フィールド値の仕様についてはフィールドの形式により異なります。 詳細については フィールド形式をご確認ください。
  • 省略した場合は、全フィールドの値が初期値で登録されます。
  • 存在しないフィールドコードを指定した場合、その部分は無視されます。
リクエストボディの構造(※n件のレコードを登録する場合)

リクエストの例

ボディ

アプリID「1972」のアプリに以下の2件のレコード追加する場合

1件目

フィールドの形式 フィールドコード
リッチエディタ rich_editor test1
ユーザー選択 user_select ログイン名:sato

2件目

フィールドの形式 フィールドコード
リッチエディタ rich_editor test2
ユーザー選択 user_select ログイン名:kato

レスポンスの例

登録したレコードのレコードIDとリビジョンが返されます。
レコードIDの順序はリクエストに指定したレコードの順序と対応します。

JavaScriptサンプル

kintone REST API

XMLHttpRequest

制限事項

  • 次のフィールドは、値を登録できません。
    • ルックアップフィールドによって値が入力されるフィールド
    • ステータス
    • カテゴリー
    • 計算
    • 作業者

その他につきましては、共通仕様の制限事項 をご確認ください。

関連Tips

記事に関するフィードバック

直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。

Avatar
Sugawara Genki

些細な指摘で恐縮ですが、サンプルのJSONがフォーマットエラーのようです

Avatar
cybozu Development team

Sugawara Genkiさん

cybozu.com developer network事務局です。
JSONフォーマットエラーになる箇所の修正を致しております。
ご確認ください。

Avatar
kunyanist

サンプルのJSONでCB_IJ01が返ってくる部分がありましたので報告します。

//エラー
"ユーザー選択": {
"value":
{
"code": "sato"
}
},

//成功
"ユーザー選択": {
"value":
[
{
"code": "sato"
}
]
},

Avatar
渡邊

ユーザー選択の箇所は陳腐化していて、
下記のリンクが正しいようなので、ご参考ください。

■フィールド形式 – cybozu.com developer network
https://cybozudev.zendesk.com/hc/ja/articles/202166330

Avatar
いの

XMLHttpRequestを使ったPOSTの場合、プリフライトがOPTIONSで飛ぶので、そのタイミングで405が返ってきてしまいます。
回避策はありませんか?

Avatar
cybozu Development team

いの 様

お世話になっております。cybozu developer network 事務局でございます。

var url = 'https://{subdomain}.cybozu.com/k/v1/records.json';

の{subdomain}をご自身の環境に合わせて書き換えられましたか?

ご確認の程宜しくお願い致します。

Avatar
いの

事務局ご担当者様
お世話になります。

以下情報です。
ご確認お願いいたします。

ターゲットアプリのURL→ https://hoge.cybozu.com/k/59/

----

function form_onsubmit()
{
var DOMAIN = "hoge.cybozu.com";
var BASE_URL = "https://" + DOMAIN + '/k/v1/record.json';
var APP_ID = 59;
var APITOKEN = "dkajfsdjfakdjkasljdfkajdkasldjkajfadklja";
var body = {
"app": APP_ID,
"record": {
"companyname": {
"value": $('#companyname').val()
},
"busho": {
"value": $('#busho').val()
},
"name": {
"value": $('#name').val()
},
"mail": {
"value": $('#mail').val()
},
"naiyo": {
"value": $('#naiyo').val()
}
}
};
var xhr = new XMLHttpRequest();
xhr.open('POST', BASE_URL);
xhr.setRequestHeader('X-Cybozu-API-Token', APITOKEN);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');    // <-このへんは付けても付けなくても変化なし
xhr.setRequestHeader('X-HTTP-Method-Override', 'POST');        // <-このへんは付けても付けなくても変化なし
xhr.onload = function() {
if (xhr.status === 200) {
// success
console.log(JSON.parse(xhr.responseText));
} else {
// error
console.log('status: '+xhr.status);    // <-このログは吐かれません
}
};
xhr.send(JSON.stringify(body));
}


----

(コンソールのログ)
OPTIONS https://hoge.cybozu.com/k/v1/record.json 405 (JSPs only permit GET POST or HEAD)
XMLHttpRequest cannot load https://hoge.cybozu.com/k/v1/record.json. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://myserver' is therefore not allowed access. The response had HTTP status code 405.

----

※Fiddler と Postman を使って、ローカルから同じ情報をPOSTして200が返りkintoneアプリにレコードが追加されることは確認できています。

 

Avatar
cybozu Development team

いの 様

お世話になっております。cybozu developer network 事務局でございます。

同じソースコード(bodyだけシンプルにした)で試してみたところ、正常に登録されました。
※同じドメイン内でリクエストを投げています。

エラーからすると、サーバー側に拒否されたようです。
異なるドメイン間でリクエストしていたのでしょうか?
異なるドメインですと、kintone.proxyを使うことになります。
詳細は次のページをご参考ください。

外部APIの実行:
https://developer.cybozu.io/hc/ja/articles/202166320

コミュニティ上の同じような質問:
https://developer.cybozu.io/hc/ja/community/posts/202863444-Kintone%E3%81%AE%E7%95%B0%E3%81%AA%E3%82%8B%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E9%96%93%E3%81%A7%E3%81%AEFile%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89-%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89

また、こちらは本記事に対するフィードバックのみ受け付けております。
直接的に記事と関連がないご質問はcybozu developer コミュニティをご活用ください。
有志達から色々アドバスを頂けると思います。

どうぞよろしくお願いいたします。

cybozu Development teamにより編集されました
Avatar
いの

お世話になります。

おっしゃる通り、外部ドメインからの更新・登録を目的としています。
#「kintone.proxy」って、cybozeドメインから外部ドメインへリクエストを投げる時に使うものではなかったでしたっけ?

やりたいことは以下でご紹介されていることと同じなので、node.jsからPOSTすることで当初の目的は実現できました。
https://developer.cybozu.io/hc/ja/articles/207898723-Slack%E3%81%8B%E3%82%89%E6%89%8B%E8%BB%BD%E3%81%ABkintone%E3%81%B8%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E7%99%BB%E9%8C%B2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95

ただ、XMLHttpRequestを使った例を掲載されていたので、これでいけるかもと思った次第です。
『同じドメイン』限定なら、前提条件として示していただきたいと思いました。←これは『本記事に対するフィードバック』にならないでしょうか?
文脈から察するに、『サーバー側』にOPTIONSヘッダーを受け付けるようにしていただくのは難しそうですし、「"Access-Control-Allow-Origin" : "*"」を返していただくことも難しいのでしょうね。
やはり最初の質問の回答としては「回避策はない」ということになりますかね。

これ以上の進展が無ければ本コメントへの返信は不要です。ページを汚して申し訳ございませんでした。

Avatar
cybozu Development team

いの 様

お世話になっております。cybozu developer network 事務局でございます。

外部サービスからkintoneへのPOSTですね。
ドメインの異なるサイボウズ製品だと勘違いしてしまいまして、大変失礼しました。

結論から言うと、「"Access-Control-Allow-Origin" : "*"」を返してくることはできないです。
ご期待に沿えず申し訳ございません。

ブラウザー経由ではなく、ご自身でサーバーを用意してそこにプログラムを置くか、
MS Flow等CORSを許可する他社製品を経由するなどのやり方が一般的です。

また、フィードバックいただきありがとうございました。
真摯に受け止め改善を検討いたします。

今後ともよろしくお願いいたします。

ログインしてコメントを残してください。
Powered by Zendesk