数式項目の設定

概要

ユーザーの入力に代わって計算する項目を作成できます。これらの項目は、数式の項目と呼ばれます。数式の項目を作成すると、この項目が計算する値に応じた数式を指定する必要があります。要件に応じて、フォーム /レポートに数式の値を表示したり、レポートだけに表示もできます。デフォルトでは、数式の値はレポートのみに表示されます。

数式の結果に応じて、数式の項目の値は、数字、テキスト、日付、期間になります。数式の評価は式の評価にすぎませんが、Expressionsで詳しく説明しています。

メモ

  • nullを含む式は正しく実行できません。このような式は検証の前にnullチェックを行うよう設定することが可能です

数式の項目の追加手順

  1. [数式の項目の種類]を編集エリアにドラッグ&ドロップします。
  2. ポップアップで、この項目で計算する値に応じた式を指定します。例えば、[支払い]フォームでは、[Amount]という名前の数式を追加して、[Quantiy]と[Price]の項目の値に基づいた売上額を計算します。そのため、式のエリアで[Quantity * Price]式を指定します。[Quantity]と[Rate]は項目名になります。フォームのすべての項目名は、参照として式の下に表示されます。
  3. 項目のプロパティで、数式の項目に表示する項目名、例えば[Amount]を指定してください。
  4. デフォルトでは、数式の項目はレポートにアクセスした時に表示されます。[フォームに項目を表示する]を選択して、フォームとビューに数式の値を表示します。
  5. 数式を編集するには、項目のプロパティで項目を選択して、必要な変更を加えます。変更は自動的に保存されます。[フォームに項目を表示する]が選択されていると、フォームにアクセスした際にフォームは、値を持つ[Amount]項目を表示します。
  6. 数式の項目名Amount はその値とともにレポートに表示されます。

メモ:

  • 数式の各項目は、それに関連したデータの種類を持っています。数式の結果を格納する項目もデータの種類を持っています。利用するすべてのデータの種類と演算子は、互換性が必要です。結合した項目の種類が正しくない場合、数式は機能せず、SkyDesk Creatorは、データのタイプが合っていないという「エラーメッセージ」を表示します。
  • Deluge built-in関数Delugeシステム変数 は数式で使用されます。
  • 1つの数式の項目は、他の数式の項目で使用できません。
  • 複数選択を除く、フォームのすべての種類の項目が数式で使用できます。
  • 数式は下記の条件で再計算します。
    • 数式が編集された場合
    • 数式の項目の値が編集 (データの更新)された場合

数式の例

1. [ServiceStartDate]と[ServiceEndDate]間の2つの日付の項目間の日数を計算するには?

((ServiceEndDate - ServiceStartDate) / (1000 * 60 * 60 * 24))

2. English、Maths、Scienceの3科目の平均点を計算するのは、数字の項目名です。

((English + Maths + Science) / 3)

3. 合計点を計算して、全体の割合に表示するには、score1、score2、score3 が数字の項目名で、round処理は Deluge関数です。

((score1 + score2 + score3) / 3 * 100).round(2)

4. [To_Date]と[From_Date]の2つの日時の間の時間を計算するには?

((To_Date - From_Date) / (1000 * 60 * 60))

5. [DOB] と[Name] の組み合わせに基づいて、各患者の固有のコードを作成するには、下記のような数式を持つ[数式の項目]を追加します。

((((DOB.getMonth())) + Name) + (DOB.getDay())) + (DOB.getYear())

ここでは
- DOB.getMonthに(1 -12)の範囲の数字で、日付が発生する月の数字を返します。
- DOB.getDay()に (1 – 31)の範囲の数字で、日付が発生する日の数字を返します。
- DOB.getYear()に、その日の年を表す数字を返します。
例えば、DOB が[07-Sep-1994]として、[Henry]という名前で、指定されていると、コードの項目で指定された数式は、[9henry71994]を返します。

6. DOB項目を月や日で並べ替えるには、 数式を追加します。

((((((DOB.getMonth() / 100).round(2))) + "").getSuffix(".")) + "-") + ((((DOB.getDay() / 100).round(2))) + "").getSuffix(".")

ここでは、

- DOB.getMonth()に(1 -12)の範囲の数字で、日付が発生する月の数字を返します。
- DOB.getDay()に (1 – 31)の範囲の数字で、日付が発生する日の数字を返します。

Order_DOB項目に指定した数式は、[mm]-[dd]を返します。月と日の両方に2桁で実施します。そうでなければ、順番は 1, 10, 11, 12, 2, 3,などの間違ったものになります。

[round()]と[getsuffix]についての詳細は、 Functionsを参照してください。

7.DOBから生年月日を計算するには、数式の項目を追加して、下記の関数を指定します。

((zoho.currentdate - DOB) / (1000 * 3600 * 24 * 365)).round(2)

メモ

数式の項目を使用する場合、計算された年齢は、レポートにだけ表示されます。(例) 計算は、フォームの送信によって完了しますが、年齢を数字の項目に使用すると、送信されるまで フォームそのものに表示されます。これは、ユーザー入力時スクリプトを数字の項目に追加することによって実施されます。年齢を計算するための数式の項目 (Age2) と 数字の項目 (Age)を持つサンプルのアプリケーションDOBから生年月日を計算するには、数式の項目を追加して、下記の関数を指定します。Age Calculation を参照してください。

条件付き数式

下記の条件付き数式で、boolean式が trueの時に[expression1]が割り当てられ、そうでない場合は[expression2] の値が割り当てられます。

<variable> = if(<Boolean expression>, expression1, expression2)

例1:

下記の数式は、数字の項目の[null]の値のチェックに使用されます。数字の項目の値が[null]の場合、値0が割り当てられ、そうでない場合、数字の項目の値が割り当てられます。

(ifnull(input.number_field,0))

例2:

下記の数式は、他の項目で指定された値に基づいて、項目の値の更新に使用されます。売り上げの値がコストより大きい場合、値[Profit]が割り当てられ、そうでなければ、[Loss]が割り当てられます。

if(input.sales > input.cost, "Profit","Loss")

例3:

下記の数式は、項目の値が[null]ではない値にのみ、メールのタスクの送信に使用されます。この式はメールタスクを送信するコンテンツ[Message]で使用されます。ここで、[Name] と[Email_1]はフォームの項目名です。

if((input.Name != ""),"\nName : " + input.Name,"") + "<br />\n" + if((input.Email_1 != null),"\nEmail : " + input.Email_1,"") + "<br />"

複雑な条件には、[if statement]がフォームのアクション on add -> on success で使用されます。

スクリプトのアクション

Delugeround()関数を使用して、数式の結果を小数点以下2位で四捨五入できます。このアクションを実行するには

    •     編集モードで、ワークフローをクリックします。
    •     項目のアクション --> ユーザー入力時を選択して、コードを入力します。
    •     アプリケーションにアクセスします。
    •     ワークフローで記述したスクリプトに応じて、数式の四捨五入の結果が表示されます。

    構文は下記になります。

    (field1 + field2).round(Integer)

    例: (Decimal_field + Number_field).round(2)

    上記の例では、少数と数字の項目の合計が2桁に四捨五入され結果が表示されます。

    関連リンク - If 条件文を使ったNullチェック

    If 条件文を使ったNullチェック