kintoneのqueryのjavascriptのエスケープシーケンスについて
kintoneのREST APIでjavascriptのダブルクォーテーションのエスケープシーケンス抜けによりkintoneのapiリクエストが返ってこないケースが発生したので残しておきます。kintoneアプリID 1「毎日のおやつ献立アプリ」において、「月曜日おやつアプリ」アプリID 23 のフィールドコードmeal_drinkがコーラかnullのレコード一覧を、 kintoneアプリID 1「毎日のおやつ献立アプリ」のレコード作成・編集画面で(コンソールログで)表示というシナリオです。以下のリクエストパラメータのqueryのダブルクォートのエスケープシーケンスにご注意ください。間違えると、エラーすら表示されません。
(function() {
'use strict';
//紐づけるアプリID
const CONFIG ={
//月曜日おやつアプリ
MONDAY_MEAL_APPID: 23
}
//イベント発火タイミング(レコード作成画面を開いた時、レコード編集画面を開いた時)
const event_array =[
'app.record.create.show',
'mobile.app.record.create.show',
'app.record.edit.show',
'mobile.app.record.edit.show'
];
//イベント発火時にコンソールログにテストアプリのクエリー該当レコード達を出力
kintone.events.on( event_array , function (event) {
//リクエストパラメータ(アプリIDとクエリを指定)
let params = {
'app': CONFIG.MONDAY_MEAL_APPID, //月曜日おやつアプリID 23
'query': "meal_drink in (\"コーラ\",\"\")" //フィールドコードmeal_drinkのvalueがコーラとnull
};
//複数レコ―ドのGETリクエストをkintone.Promiseオブジェクトで。複数レコード取得なので /k/v1/records です。
kintone.api(kintone.api.url('/k/v1/records',true), 'GET', params).then(function(resp) {
//リクエスト成功してレスポンス返ってきたのでコンソールログに出力
console.log('[resp-success]');
console.log(resp);
console.log('[/resp-success]');
}, function(error) {
//error:エラーの場合はメッセージを表示する
var errmsg = 'レコード取得時にエラーが発生しました。';
// レスポンスにエラーメッセージが含まれる場合はメッセージを表示する
if (error.message !== undefined) {
errmsg += '\n' + error.message;
}
console.log('[resp-error]');
console.log(errmsg);
console.log('[/resp-error]');
});
});
})();
queryのダメな記載パターン
paramsのqueryについて右側のvalue全体のダブルクォート無しはダメです。javascript関数は入っていないので右側のvalue部分をまるごとダブルクォートでくくってコーラとnullのダブルクォートはエスケープしましょう。
尚、フォームクリエイターのラジオボタンを使っています。「 レコードの取得(GET)」にて「フィールド、システム識別子ごとの利用可能な演算子と関数一覧」にてフィールド種別で使える演算子などを確認出来ます。