0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Lodashでkintoneを意識しつつデータを操作する

Posted at

lodash

lodashはJavScriptのユーティリティーライブラリです。kintoneカスタマイズでは大変便利なライブラリです。
"_"がグローバルオブジェクトで出てきたときは、lodashが利用されています。

_.isEmpty(str)

kintone開発ではおそらく一番利用される関数です。これは値の空を確認する関数で、フィールドに値が存在するかどうかを検査するときにつかいます。

const dropdownValue = ev.record.ドロップダウン.value;
if(_.isEmpty(dropdownValue)){
    ev.record.文字列一行.value = dropdownValue
}

_.isEmptyで書かない場合は以下のように書く必要があります。

null != dropdownValue || '' != drowdownValue

👇kintoneのドキュメントからの抜粋。
image.png

検査に"==="を使うと不具合を起こしやすいのも特徴です。(nullとundefinedを両方意識する必要がある。)

_.isEmptyは、配列の空も検査できるため、チェックボックスでも同じように利用することができます。


空値のチェックはとにかくバグを埋め込みやすいので、ぼくはlodashで書く癖をつけています。

_.range(start, end, step=1)

startからstepずつ加算していき、end未満までの数値を格納した配列を返します。
stepの初期値は1。

10~20までの偶数値をサブテーブルに入れたい場合は以下のように書きます。

const rec = kintone.app.record.get();
rec.record.テーブル.value = _.range(10, 21, 2) //[10,12,...,20]
    .map(num => {
        const subtableItem = {
            数値 : {
                value : num,
                type : "NUMBER"
            }
        }
        return {
            value : subtableItem
        }
    });
kintone.app.record.set(rec);

_.uniq(array)

逆にテーブルやレコードに複数の値が入っていて、重複を排除したい場合に利用します。
サブテーブルに入っているメールアドレスを文字列複数行に改行で区切って設置してみます。

const rec = kintone.app.record.get();

//【メールアドレス】というフィールドの値を配列にして取り出す。
const customerEmails = rec.record.顧客リスト.value.map((subtableRow) => {
    const subtableItem = subtableRow.value;
    return subtableItem.メールアドレス.value
})
.filter(
    //空値を排除
    mail => !_.isEmpty(mail)
);


const customerEmailsUnique = _.uniq(customerEmails);

//【メール一覧】は文字列複数行。メールアドレスごとに改行して配置
rec.record.メール一覧.value = customerEmailsUnique.join('\n')

kintone.app.record.set(rec);

_.chunk(array, size=1)

配列をsizeに示される要素数で切り出します。sizeの初期値は1。
kintoneでは登録/更新は100件ずつしかできませんので、よく使いますね。

const nums = _.range(1, 2001, 1);//[1,2,3,4...2000]

const chunks = _.chunk(nums, 100); //[[1,2...], [101, 102...], [201...]...]

const appId = `222`;
const body = {
    requests : chunks.map((numArray /* [1,2...100] */) => {
        return {
            method : 'POST',
            api : `/k/v1/records.json`,
            payload : {
                app : appId,
                records : numArray.map((num /* 1 */) => {
                    return {
                        連番 : { value : num}
                    }
                })
            }
        }
    })
};

//kintoneのREST APIでのデータ登録は100件ずつしかできない。
await kintone.api(kintone.api.url('/k/v1/bulkRequest.json', true), 'POST', body);

まとめ

lodashは開発で必須のライブラリなので、うまく使えるとうれしいですね!
_.sampleなんかもよく使う関数です。まだ知らない関数があるかもしれない。
おすすめの使い方がありましたら、教えてください😊


kintoneのプラグイン開発や研修などを行っています。
お仕事のお話はこちらまで。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?