1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

kintone.apiによる簡単なレコード内容の取得と検証

Posted at

はじめに

kintoneのREST APIを使用してレコードの更新を行う際、REST APIに渡したJSONデータのレコード内容がエラーとなってしまい、途方に暮れることはないでしょうか?また、項目数が多くなってくるとレコード構造を作るのも一苦労です。

そんな時はChromeブラウザで対象のkintoneアプリの1レコードを表示し、DevToolsのコンソールでkintone.app.record.get()とkintone.app.record.set()を実行することで、簡単にレコード内容の取得と検証を行うことができます。

補足

この記事を作成している時点(2022年11月)でkintone.app.record.get()とkintone.app.record.set()は、kintoneレコード表示画面のchangeイベント( app.record.create.change.<フィールドコード>、app.record.edit.change.<フィールドコード>)以外のイベント内では使用できません。
例としてshowイベント内で使用するとこんな感じでエラーが表示されます。
image.png

サンプルアプリ

サンプルとして項目を並べて、適当なアプリを作成しました。
また、レコード内容を取得した時に分かりやすいように、各項目にデータを入力したレコードをkintoneアプリに登録しています。
image.png

レコードの取得

まず、レコード構造を取得したいkintoneアプリのレコードを1件開いて、編集モードにします。その画面でF12キーを押下してDevToolsを起動します。DevToolsが起動したら、コンソールウィンドウに"kintone.app.record.get()"と入力し、実行します。
実行結果が表示されるので、{record: {…}}を右クリックして「objectをコピー」をクリックします。
image.png

「objectをコピー」した内容をメモ帳などに貼り付けます。これでレコード構造付きでレコード内容を取得することができました。

{
    "record": {
        "支店コード": {
            "type": "SINGLE_LINE_TEXT",
            "value": "SMPL001"
        },
        "支店名": {
            "type": "SINGLE_LINE_TEXT",
            "value": "サンプル支店"
        },
        "配送オプション": {
            "type": "CHECK_BOX",
            "value": [
                "段ボール",
                "冷蔵"
            ]
        },
        "明細テーブル": {
            "type": "SUBTABLE",
            "value": [
                {
                    "id": "209188",
                    "value": {
                        "品目コード": {
                            "type": "SINGLE_LINE_TEXT",
                            "value": "001"
                        },
                        "品名": {
                            "type": "SINGLE_LINE_TEXT",
                            "value": "みかん"
                        },
                        "数量": {
                            "type": "NUMBER",
                            "value": "1"
                        }
                    }
                }
            ]
        },
        "$revision": {
            "type": "__REVISION__",
            "value": "5"
        },
        "$id": {
            "type": "__ID__",
            "value": "1"
        },
        "レコード番号": {
            "type": "RECORD_NUMBER",
            "value": "1"
        },
        "更新者": {
            "type": "MODIFIER",
            "value": {
                "code": "K211033",
                "name": "ds_user"
            }
        },
        "作成者": {
            "type": "CREATOR",
            "value": {
                "code": "K211033",
                "name": "ds_user"
            }
        },
        "更新日時": {
            "type": "UPDATED_TIME",
            "value": "2022-11-30T11:40:00Z"
        },
        "作成日時": {
            "type": "CREATED_TIME",
            "value": "2022-11-29T10:35:00Z"
        }
    }
}

レコードの検証

ここからの作業はkintoneアプリ側がレコード編集画面でなければ、画面の内容に反映されません。

まず、先程取得したレコード構造の内容を書き換えて、コンソール上で適当な変数に格納します。今回の例では支店コード、支店名、配送オプションを変更し、テーブルにレコードを追加しています。

var aa = {
    "record": {
        "支店コード": {
            "type": "SINGLE_LINE_TEXT",
            "value": "SMPL002"
        },
        "支店名": {
            "type": "SINGLE_LINE_TEXT",
            "value": "サンプル支店2"
        },
        "配送オプション": {
            "type": "CHECK_BOX",
            "value": [
                "マルチ"                
            ]
        },
        "明細テーブル": {
            "type": "SUBTABLE",
            "value": [
                {
                    "id": "209188",
                    "value": {
                        "品目コード": {
                            "type": "SINGLE_LINE_TEXT",
                            "value": "001"
                        },
                        "品名": {
                            "type": "SINGLE_LINE_TEXT",
                            "value": "みかん"
                        },
                        "数量": {
                            "type": "NUMBER",
                            "value": "1"
                        }
                    }
                },
                {

                    "value": {
                        "品目コード": {
                            "type": "SINGLE_LINE_TEXT",
                            "value": "002"
                        },
                        "品名": {
                            "type": "SINGLE_LINE_TEXT",
                            "value": "りんご"
                        },
                        "数量": {
                            "type": "NUMBER",
                            "value": "2"
                        }
                    }
                }
            ]
        },
        "$revision": {
            "type": "__REVISION__",
            "value": "5"
        },
        "$id": {
            "type": "__ID__",
            "value": "1"
        },
        "レコード番号": {
            "type": "RECORD_NUMBER",
            "value": "1"
        },
        "更新者": {
            "type": "MODIFIER",
            "value": {
                "code": "K211033",
                "name": "ds_user"
            }
        },
        "作成者": {
            "type": "CREATOR",
            "value": {
                "code": "K211033",
                "name": "ds_user"
            }
        },
        "更新日時": {
            "type": "UPDATED_TIME",
            "value": "2022-11-30T11:40:00Z"
        },
        "作成日時": {
            "type": "CREATED_TIME",
            "value": "2022-11-29T10:35:00Z"
        }
    }
}

実際にはコンソールでこんな感じで貼り付けます。
image.png
次に、先程の変数を引数にkintone.app.record.set()を実行します。
image.png
kintoneのレコード編集画面を確認すると、編集したレコード内容が反映されています。これで編集したレコード内容が想定通り反映されているか、確認することができます。
image.png

kintone.app.record.set()は、レコード編集画面上の内容を変更するだけでkintoneアプリのレコードを更新しているわけではありません。このため、レコード編集画面でキャンセルボタンを押下すれば、変更した内容を破棄することができます。つまり、編集したレコード内容がうまく反映されなければ、何度でもやり直すことができます。
レッツ、トライアンドエラー!!

おわりに

kintone REST APIによるレコード更新時にレコード内容が原因と思われるエラーが発生する度にウンザリしていたのですが、今回の手順でkintoneから取得したレコード内容(構造付き)と自作のコード内で生成したレコード内容と比較することができるようになり、問題箇所が把握しやすくなりました。コードで登録したいレコード内容をkintone画面上で登録して、レコード内容を取得してしまえばよいのです。
また、レコード新規登録時のJSONデータでは$id項目、レコード番号や作成者、作成日時、更新者、更新日時、それにサブテーブルのid項目は不要になるので、これらの要素を省略すれば、レコード構造を流用することができます。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?