画面は開発中のものです

人生とは、永遠のβテストだ。




ここのところ、計画書の執筆だったり、役所への申請だったりで、
ロクにコードを書いていなかったので、リハビリがてらjavascriptをゴリゴリ書いてました。
(まぁ、とは言うもののHTMLとcss書いてた時間と半々くらいだったのですが)

会社員時代に、かなりお世話になったKINTONE。
開発者ライセンスを申請すれば、無料で開発環境を提供頂けるので、
久々に触ってみました。

で、見事に2時間くらいハマった箇所が出てきたので、その備忘録です。

独自の入力フォームを作ろうとした

KINTONEって、アプリに定義したフィールドが、
編集画面や詳細画面で嫌でも全部読み込まれてしまうんです。



まぁ、こんな感じ。
上記はまだ項目数が少ないので、あまり気にならないのですが、
数十項目のフィールドが存在するアプリで、
「手元に項目1、2、3のデータだけある、件数数十件のリストが存在する」
なんてときに、新規作成画面で関係ないフィールドまで「わさーーーー」っと出てくるのが……つらい……

というわけで、劇的ビフォーアフター。




一覧画面の設定の画面で、
「レコード一覧の表示形式」を「カスタマイズ」にすることで、
HTMLを記述することが出来るので、それを活用しました。

input要素に、対応するデータを入力して、
「登録」ボタンをクリックすることで、input要素をコネコネして、
最終的にREST APIでPOSTを叩いて登録処理をする、と。

やりたかったのはそれだけなのですが、RESTのところで2時間近くハマりまして。

REST APIを叩こうとして「Uncaught error」とだけ返ってくる

最終的に動いたコードは以下の通りです。

//ここから

    // ここより前段階で色々定義してるけど省略
    var url = "/k/v1/record";

    var body = {
        "app": 9,
        "record": {
            "氏名": {
                "value": name
            },
            "自己紹介投稿": {
                "value": detail
            },
            "facebook": {
                "value": facebook
            }
        }
    };

    kintone.api(kintone.api.url(url, true), 'POST', body, function(resp) {
        // success
        console.log(resp);
        location.reload();
    }, function(error) {
        // error
        console.log(error);
        alert("データの保存に失敗しました。");
    });
//ここまで

これを書き上げるまでが長かった……

エラー発生箇所としては、
「さぁKINTONE API叩くぞー!」という行に差し掛かった際に、
無情にもコンソールログに表示される「Uncaught error」……

ここでね、他にも何かしらのエラーメッセージが出てくれていれば、
まだ調査のしようがあったのですが、
マジで「Uncaught error」以外のエラーメッセージが出力されず、
色々と試行錯誤しているうちに、だいぶ時間が経ってしまいまして。

叩くURLを変更したら無事動いた

さて、どこでしくじっていたかと言うと、


    var url = "/k/v1/record";

この部分。
ここが、


    var url = "/k/v1/record.json";

と、URIを記述していたことに、長らく気付かなかったんですね。
他のAPIを叩きながら、通る・通らないを検証してくうちに、発見出来ましたとさ。


KINTONEの公式のリファレンスを見ながら書いてたはずなんですけどね。
確かに、今、ページに記載のサンプルソースを確認すると、
当該箇所に「.json」なんて書いてないんですよ。URI欄には書いてるけど。
おかしいなぁ。コピペしたはずなんだけどなぁ。

 * * * 

という、凡ミスも凡ミス、超凡ミスをやらかしまして。
で、こうした凡ミスのときって、ググっても何も情報が出てこないという……
だって凡ミスだもの。誰もログ取ってないし、取ってたところで公開したくないさ。

でもね。私はこの凡ミスの解決に2時間近く頭を悩ませたんです。
同じ苦しみを味わう人が一人でも減るよう、ここに備忘録として残しておきます。
執筆者プロフィール

※この領域は現在工事中です

↑このページのトップヘ