カスタマインでフィールドに色んな値をセットする

公開日:

こんにちは、サポートの中の人 にら です。

最近はビリヤニ(インドの炊き込みご飯)やカレーとともに、マサラチャイ(スパイス入りミルクティー)にもはまっていて、スパイスをそのまま煮たり、スパイスミルで粉にして煮たりと色んな作り方を試しています。
先日初めてスパイスを粉にして煮てみた時に、家族から「なんやこのニオイ」「息がしづらい」「もう作らないで」と真剣に訴えられました。
私はなんともなかったので、換気扇から遠い場所にいた家族にだけダメージがあったのかもしれません。

出来上がったマサラチャイはスパイスがよく香っておいしかったので、粉にして煮るのは家族が不在の時だけにしようと思います。

たぶんマサラチャイに唐辛子入れたことが原因なんよな。そんなに顔近づけたらむせますよ

さて、カスタマインには やること「フィールドに値をセットする」があります。
名前の通りkintoneのフィールドに値をセットするためのシンプルな やること です。

シンプルなので、あまり意識して使っていない方がほとんどだと思いますが、関数や演算子と組み合わせると意外と色んな値をフィールドにセットできます。マサラチャイもシンプルに見えて、スパイスの組み合わせや粉にするかどうか、煮る時間などで仕上がりが変わるように、やること「フィールドに値をセットする」も組み合わせで仕上がり(セットできる値)が変わります。

ちょっと無理やりな導入ですが…今回は色んな値のセットをご紹介したいと思います。

単純なセット

テーブル外のフィールド→テーブル外のフィールド

まずは最も基本的な、テーブル外にあるフィールドの値が変わった時に、同じくテーブル外の別のフィールドに値をセットするカスタマイズです。

テーブル内のフィールド→テーブル外のフィールド

次に、テーブル内にあるフィールドの値が変わった時に、同じ行の別のフィールドに値をセットするカスタマイズです。

条件「フィールドの値を編集して値が変わった時」の「フィールド」にテーブル内のフィールドを指定すると、そのアクションでは、値が変わったフィールドがある行だけが処理対象になるため、同じ行の別のフィールドに値をセットする、ということが可能です。

この動作については、条件「フィールドの値を編集して値が変わった時」のドキュメントに記載されています。

テーブル内のフィールドを選択することも可能です。その場合、組み合わせた「やること」によっては、処理対象が発生したテーブル行に限定されます。
https://docs-customine.gusuku.io/ja/conditions/condition_event/when_field_change/#フィールド

では条件を変えてみましょう。
条件「レコードを保存する直前(削除時は除く)」を指定すると、テーブルの全行が処理対象になります。

このように、テーブル内のフィールドを対象とする場合、組み合わせる条件で値のセット対象が変わるので注意してください。

文字列(複数行)フィールドにセット

文字列(複数行)なので、改行してセットしたい気持ちになります。そんな時は、改行はエスケープシーケンス「\n」を指定してみてください。
※「n」の前の記号は、環境によって半角の「¥」に見えたり、バックスラッシュに見えたりします。

ついでに、文字列を結合する場合は「&」演算子を使います。

なお、別のやること「文字列(複数行)フィールドに値をセットする」でも同じことが可能です。

四則演算

「+」や「*」などの演算子を使用した四則演算も可能です。「値」に、

= フィールドコードA + フィールドコードB

のような式を指定してください。
使用できる演算子一覧

なお、四則演算に使用するフィールドの値が未入力の場合は下記のようなエラーになるため、条件「複数フィールドのうちどれか1つ以上が空ならば」を反転した、条件「複数フィールドの全てが空でないならば」で計算に使用するフィールド全てが空でなければ…という条件を指定するのがおすすめです。

条件の反転については下記もご覧ください。
追加条件は反転できます

数値の丸め

数値フィールドの値や計算結果を丸めたい場合は、下記の関数を使用してください。

カスタマイズではkintoneに合わせて「ROUND」と書いていますが、関数名は小文字でも大文字でもどちらでもいいです。

テーブルいろいろ

Excelの関数のように、テーブル内の数値フィールドを合計したり、最大値を取得するなど色々できます。

テーブル内の数値フィールドの合計

sum 関数 を使用します。
sum()のかっこの中にフィールドを指定する際に、合計したいフィールドのフィールドコードだけではなく、テーブルのフィールドコードも指定する必要があります。

= sum(テーブルのフィールドコード.テーブル内の合計したいフィールドのフィールドコード)

なお、テーブル内のフィールドの値の合計は、上記のカスタマイズのほかに下記の やること を使用する方法もあります。
やること「テーブル中のフィールド合計値を計算する

また、「集計」のカテゴリにある やること を使用すれば、テーブル行のうち、フィールドの値が特定の行だけ合計する…といったことも簡単にできるので、「集計」のドキュメントも確認してみてください。

テーブル内の日付フィールドの最大値

stringmax 関数 を使用します。
sum 関数のときと同様に、stringmax()のかっこの中にフィールドを指定する際に、合計したいフィールドのフィールドコードだけではなく、テーブルのフィールドコードも指定する必要があります。

= stringmax(テーブルのフィールドコード.テーブル内の合計したいフィールドのフィールドコード)

日付や文字列の場合は stringmax 関数 を使用し、数値の場合は max 関数 を使用します。

テーブル内の最大の日付の行の数値フィールドの値

テーブル内の最大の数値、最大の日付の値であれば1アクションでセットできますが、
テーブル内の最大の値を持つ行の、別のフィールドの値をセットしたい…といった場合は、いくつか手順が必要になります。

下記の例では、「テーブル内日付」が最大の行(2行目)の、「テーブル内数値1」の値「2」を、「テーブル外最大日付の数値1」にセットしています。

カスタマイズはこちらです。

やること「テーブル行をレコードとして取得する」でテーブル行を取得して、
やること「テーブルの行を並べ替える」で、最大の値を取得したい「テーブル内日付」フィールドの値で降順(日付が大きい・新しい順)に並べます。

そして、やること「フィールドに値をセットする」の値に、

= $レコードを並べ替えるのアクション番号[0].テーブル内数値1フィールドのフィールドコード

のように指定すると、やること「テーブルの行を並べ替える」で並べ替えたレコード(テーブル)の1行目、つまり一番日付が大きい行の、フィールドの値を取得してセットできます。

テーブルの最下行のフィールドの値

こちらは count 関数 を使用します。
「count(テーブルのフィールドコード)」と指定すると、テーブルの行数を取得できます。

そして、
「テーブルのフィールドコード[0]」と指定するとテーブルの1行目、
「テーブルのフィールドコード[1]」と指定するとテーブルの2行目、
「テーブルのフィールドコード[テーブルの行数-1]」とするとテーブルの最終行を得られますので、

やること「フィールドに値をセットする」の値に、

= テーブルのフィールドコード[count(テーブルのフィールドコード)-1].テーブル内ドロップダウンのフィールドコード 

のように指定するとテーブルの最下行の値を取得してセットできます。

サポートサイトの記事で細かくご紹介していますので、こちらもご覧ください。
テーブルの最下行のフィールドの値をテーブル外フィールドにセットする方法

おわりに

ということで、フィールドへの値セットの色々なパターンをご紹介しましたが、いかがでしたでしょうか?
フィールドへの値セットは基本的なカスタマイズと思いきや、意外に奥深いので是非色々試してみてください。

それではまた!

投稿者プロフィール

アバター画像
にら
gusukuのチャットサポートの中の人です。
kintone認定資格は5冠。
趣味はキャンプ、最近登山もはじめました。