kintone.app.record.setの際のPCとモバイル判断方法

いつもお世話になっております。

 

以下のような感じでrecordをgetして、recordsに値を諸々セットしたのち、

recordsをsetしたいのですが、setするときもPCとモバイルで

 

(PC)kintone.app.record.set(records);

(モバイル)kintone.mobile.app.recordset(records);

 

となると思うのですが、モバイルなのかどうかをどのように判断すればよいでしょうか?

getしたときにフラグ的なものをセットしておけばよいのかな?とも思いますが、

もっとスマートな方法があるかもと思い、質問させていただきました。

よろしくお願いいたします。

 

               let records = kintone.app.record.get();

                if(records === null){

                    records = kintone.mobile.app.record.get();

                }

~~~~~~~~~~~~~

      recordsに諸々セット

~~~~~~~~~~~~~

                   kintone.app.record.set(records);

 

私の場合ですが

const isMobile = location.href.match(/\/m\//g)

という感じでURLにモバイル版を意味する「/m/」があるかをグローバル宣言しています。

それぞれ

let recordData = isMobile ? kintone.mobile.app.record.get(): kintone.app.record.get();

if (isMobile) {
kintone.mobile.app.record.set(recordData);
} else {
kintone.app.record.set(recordData);
}

という感じで使っています。他にもっとスマートな方法があれば私も教わりたいです。

mls-hashimotoさま

URLで判断する方法ですね!確かにそれでも判断できますね。

試してみます!

とりあえず自分で解決できてもなんだかイケテない方法が多くて悩ましいです。

 

はじめまして。

const KINTONE = event.type.includes('mobile') ? kintone.mobile : kintone;

私は上記のような方法でイベントオブジェクトのイベントタイプの文字にモバイルがあれば、
という条件分岐を利用しています。XXX.app.record.set()のみならず、
setFieldShownなどの他のメソッドもifを毎回使わず使い分けることができるかと思います。

岡﨑光輝さま

こんな書き方もできるんですね!

なんだか使い勝手がよさそうです。

試してみます!