KINTONEのjavascriptカスタマイズ中にREST APIの叩き方でハマった

ここのところ、計画書の執筆だったり、役所への申請だったりで、
ロクにコードを書いていなかったので、リハビリがてら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時間近く頭を悩ませたんです。
同じ苦しみを味わう人が一人でも減るよう、ここに備忘録として残しておきます。

タイトルとURLをコピーしました