見出し画像

[kintoneスニペット] チェックボックスを文字列化する数式が一瞬で生成できるミニツール

こんにちは、キン担ラボの本橋です。実験的にちょっとしたコードを公開していこうと思います。

本橋です

こういう道具がネット上に増えていくと便利になるシーンもあるかもな、との思いつきでkintoneアプリの数式作成をサポートしてくれるコードを動かせる状態で公開してみます。DevToysと似た発想です。

DevToysにならってKinToysという名前も考えたけど、Toyをそんなにたくさん出せるか不安なのでひとまずkintoneスニペットと呼ぶことにしました。

このスニペットの目的

チェック項目をベースに、以下のような計算式を自動作成することがこのスニペットの目的です。

IF(CONTAINS(チェックボックス,"sample1"),"sample1, ","") & IF(CONTAINS(チェックボックス,"sample2"),"sample2, ","") & IF(CONTAINS(チェックボックス,"sample3"),"sample3, ","") & IF(CONTAINS(チェックボックス,"sample4"),"sample4, ","")

チェックボックスを文字として連結するkintoneの計算式です

kintoneを使っていて、チェックボックスの選択項目を連結したくなったことはありませんか? 特にエクスポートしようとしたとき、チェックボックスが項目ごとに別の行に分割されて出力されてしまいます。

この問題を回避するため、選択した項目を文字列として連結して自動計算フィールドに配置する、という対処法があります。チェックボックスの選択項目の数だけ計算式を連結することになり、ちょっと大変です。

大変なことはコードにやらせたいですね。ということですぐに動作するスニペットとして公開してみました。

チェックボックス項目連結スニペット

ブラウザで以下のリンク先を開いてみてください。

実行できる状態でJavaScriptの小さなコード(スニペット)が表示されます。画面左側の"JavaScript"タブのコードを書き換えるとすぐに実行結果が右下のコンソールに出力されます。

JavaScriptタブのsample1のところに「あああ」とかなんとか書き加えてみてください。すぐに右下の実行結果が変化することが分かるかと思います。

こうやって少しずつ手を加えて動きに変化を加えていく遊びをティンカリングと呼びます。

分かる方はここまでの説明で十分使えると思いますので、以下は読み飛ばしてもらっても大丈夫です。

kintoneスニペットの使い方

手順ごとに詳しく解説していきます。

1. JSitorのスニペットを開く

次に、先ほど紹介したものと同じ下記のリンクを開きます。

新しく開いたウィンドウに下記のようにJavaScriptコードが表示されています。

このうち、コメントの1, 2, 3の順番で設定していきます。

2. フィールドコードと区切り文字の指定

1はチェックボックスフィールドのフィールドコードを指定します。

2は区切り文字を入れます。デフォルトだとカンマを入力しておきました。お好みで書き換えてください。

// 1. チェックボックスのフィールドコードを指定
const fieldcode = 'チェックボックス'
// 2. 区切り文字を指定
const delimiter = ', '

3. チェック項目のコピー

お使いのアプリの設定画面から、エクスポートしたいチェックボックスフィールドの設定ダイアログを開いてください。ダイアログを矢印のように右下から左上にドラッグして項目を選択状態にします。

すべての項目が選択された状態でCTRL+Cを押してクリップボードにコピーします。

4. チェック項目のペースト

コメントの3を見ていきます。JavaScriptコードにconst paste_area = ` という変数設定している行があります。次の行から、コピペした文字列をペーストしてください。

空行は無視するので、行数がおかしくても無視して構いません。

// 3. チェックボックスのアイテムをコピーして、下の`から`の間にペーストしてください。空行の数は気にしなくて良いです。
const paste_area = `

sample1

sample2


`

⇧のsample1, sample2のあたりにペーストして、⇩のようになったら成功。

// 3. チェックボックスのアイテムをコピーして、下の`から`の間にペーストしてください。空行の数は気にしなくて良いです。
const paste_area = `

sample1

sample2

sample3

sample4


`

5. 自動作成された数式のコピー

JSitorの右下ウィンドウに表示された計算式をコピーします。

右下あたりがコンソール出力です
IF(CONTAINS(チェックボックス,"sample1"),"sample1, ","") & IF(CONTAINS(チェックボックス,"sample2"),"sample2, ","") & IF(CONTAINS(チェックボックス,"sample3"),"sample3, ","") & IF(CONTAINS(チェックボックス,"sample4"),"sample4, ","")

最後コピーした計算式を、新しく作成した文字列(1行)フィールドを自動計算設定にして、計算式としてペーストします。

「自動計算する」にチェックを入れてください

保存して、「アプリの動作テスト」をして動きを確認してみましょう。

文字列(1行)として表示されれば成功!

選んだチェックボックスが連結されて文字列フィールドに表示されました。

6. エクスポートして確認

いくつかレコードを保存して、エクスポートで書き出したものをexcelで開くと次のようになっているかと思います。

F列に連結されています

7. 未解決の課題

連結文字列が最後にもくっついて出てしまうんですよね。ちょっと美しくない。

計算式だけで回避しようとすると面倒なので保留しました

なぜスニペット?

これまでも、kintoneに大規模な機能追加をするなら連携サービス、中規模ならプラグイン、小規模ならJSカスタマイズ、みたいに、kintoneに機能を追加するためにはいくつかの手段がありました。

今回の計算式もお客さんからご相談いただいて作成しています。ところが説明しながら『これこれこうすると簡単に実現できますよ…いやこれ簡単じゃないな…』とセルフツッコミしていました。

プログラマが普段使っているツールを使えば複雑な計算式もちょちょいと作れますが、そうではない人にとっては難しいだろうし、かといってJSカスタマイズやプラグインを作るには大げさ。

そんな隙間を狙って、ただのスニペット公開ではなくてツールとして誰でも動かせるうように…と形にしてみました。

ほかにも簡単に動かせると便利になりそうな計算式があればぜひ教えてください。スニペット化してみたいと思います。


この記事が気に入ったらサポートをしてみませんか?