Categories: kintone

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)」にて「フィールド、システム識別子ごとの利用可能な演算子と関数一覧」にてフィールド種別で使える演算子などを確認出来ます。

Nissy

Share
Published by
Nissy