フィールドの文字数をカウントしてみよう!

著者名:北川 恭平(サイボウズ株式会社)

目次

はじめに

こんにちは。北川@サイボウズです。

kintone での利用シーンとして、たとえばゲストスペースを利用して他社と原稿データなどの文章データやりとりしていたとします。

そんな時に、規定の文字数に達しているか?を知りたくなる方が多いのではないでしょうか?
そこで今回はレコード保存時に、文字数をカウントした情報を保存する簡単なカスタマイズを紹介します。

サンプルアプリ

それではさっそく、「数値」と「文字列(複数行)」のみの簡単なアプリを作成してみましょう!
実際に作成したアプリの詳細は以下です。

フィールドタイプ フィールド名 フィールドコード
数値 文字数 count
文字列(複数行) 本文 honbun

サンプルプログラム

それではさっそくサンプルを作っていきましょう。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**
 * 文字数をカウントする
 * Copyright (c) 2014 Cybozu
 *
 * Licensed under the MIT License
 * https://opensource.org/license/mit/
 */
(() => {
  'use strict';

  kintone.events.on(['app.record.create.submit', 'app.record.edit.submit', 'app.record.index.edit.submit'], (event) => {
    // 本文に入力された文字数を取得
    const rec = event.record;
    const st = rec.honbun.value;
    // 空白文字を削除
    const st2 = st.replace(/\s+/g, '');
    // 文字数フィールドに文字数を代入
    rec.count.value = st2.length;

    return event;
  });
})();

とっても簡単ですね!忘れてはいけないのは、レコード登録時だけではなく、「 レコード編集画面で保存するときのイベント」「 レコード一覧画面のインライン編集で保存するときのイベント」が発生した時でも文字数をカウントするということです。

結果確認

それでは、作成した JavaScript で結果を確認してみましょう。
キャプチャでは、上記記載のサンプルコードの他に「文字数」フィールドの編集を制御する処理をいれています。
詳しくは フィールドの編集可/不可を設定する を参照してください。

試しに半角スペースも入れて「保存」をおしてみます。

スペースを除いた文字数「18」が「文字数」フィールドに保存されました!
(ちなみに今回は大文字、小文字、記号は関係なく 1 文字とカウントします)

最後に

今回の内容はライトなものでしたがいかがでしたでしょうか?

現在、developer network でこんな内容の Tips が欲しい!や、こんなことで今もやもやしている!などのご意見をどしどし募集しています。
ちょっとした内容でもかまわないのでお気軽に、 コミュニティ に投稿していただければと思います。

information

この Tips は、2014 年 6 月版 kintone で動作を確認しています。