計算式の使い方
計算式は手当額の計算や仕訳データ出力の設定で、独自のルールを設定する際に使います。
計算式は制御構文、演算子、項目、数値、文字を組み合わせて作成します。
制御構文
計算式は上から順に実行されますが、制御構文を使うことで処理を分岐できます。
「Aの場合は◯◯、Bの場合は✗✗」といった条件分岐が必要な場合に使用します。
if / elseif / else
条件に応じて処理を分岐させます。
|
構文 |
説明 |
|---|---|
|
if |
条件式を書きます。条件に合致するとその下の行が実行されます。制御構文は必ずifから始まります。 |
|
elseif |
if以外の条件が必要な場合に使います。複数書くことができ、上から順に判定して条件に合致する1箇所のみが実行されます。 |
|
else |
if、elseifのどれにも合致しない場合に実行する処理を書きます。 |
|
then |
条件式の終わりに記述します。ifまたはelseifの後に書きます。elseには不要です。 |
|
return |
計算を終了して結果を返します。 |
|
end |
ifブロックの終わりを示します。必ず書きます。 |
if [申請者役職情報.役職コード] = 'A0001' then
return 10000
elseif [申請者役職情報.役職コード] = 'A0002' then
return 5000
elseif [申請者役職情報.役職コード] = 'A0003' then
return 2500
else
return 1000
end
演算子
データを計算・比較するためのキーワードです。
論理演算子
複数の条件を組み合わせる際に使用します。
and(かつ)
すべての条件が成り立つ場合に真となります。
if [申請者役職情報.役職コード] = 'A0001' and [申請者部門情報.部門コード] = 'B0001' then
return 10000
end
or(または)
いずれかの条件が成り立つ場合に真となります。
if [申請者役職情報.役職コード] = 'A0001' or [申請者部門情報.部門コード] = 'B0001' then
return 10000
end
!(NOT演算子)
条件に合致しない場合を判定します。
if !([申請者役職情報.役職コード] = 'A0001') then
// 役職コードがA0001ではない場合
return 10000
end
演算子の優先順位
andはorよりも優先されます。
優先順位を変えたい場合は括弧()で囲みます。
// andが先に評価される例
if [役職コード] = 'A0001' or [役職コード] = 'A0002' and [部門コード] = 'B0001' then
// ①役職コードがA0001
// ②役職コードがA0002かつ部門コードがB0001
// ①②のどちらかに合致すれば実行される
return 10000
end
// 括弧で優先順位を変更
if ([役職コード] = 'A0001' or [役職コード] = 'A0002') and [部門コード] = 'B0001' then
// ①役職コードがA0001またはA0002
// ②部門コードがB0001
// ①と②の両方に合致する場合のみ実行される
return 10000
end
算術演算子
数値の計算に使用します。
文字列を含む場合、+以外はエラーになります。
|
演算子 |
説明 |
例 |
|---|---|---|
|
+ |
足し算(文字列の場合は結合) |
10000 + 5000 → 15000 'ABC' + 5000 → ABC5000 '100' + 5000 → 1005000 |
|
- |
引き算 |
10000 - 2000 → 8000 |
|
* |
掛け算 |
10000 * 3 → 30000 |
|
/ |
割り算 |
10000 / 5 → 2000 |
注意
エラーになった場合、計算結果は無し(手当額の場合は0)になります。
比較演算子
値を比較する際に使用します。
|
演算子 |
説明 |
例 |
|---|---|---|
|
= |
等しい |
[金額] = 1000 |
|
!= |
等しくない |
[金額] != 1000 |
|
< |
より小さい |
[金額] < 1000 |
|
<= |
以下 |
[金額] <= 1000 |
|
> |
より大きい |
[金額] > 1000 |
|
>= |
以上 |
[金額] >= 1000 |
-
社員名で比較する時は苗字・名前の間にスペースを入れないでください
-
日付はYYYY/MM/DD形式(例: 2025/01/01)で指定してください
-
時刻はHH:MM形式(例: 23:59)で指定してください
-
期間、時間範囲の項目との比較はできません
項目
計算式で使用できる項目です。
[項目カテゴリ.項目名]の形式で記述します。
画面上の「挿入」ボタンをクリックすると計算式に追加されます。
ヘッダ項目
申請全体に関する項目です。
[申請データ(ヘッダ).項目名]の形式で使用します。
事前申請
事前申請の一覧に表示されている申請Noと比較します。
if [申請データ(ヘッダ).事前申請] = 10 then
return 1000
end
X'sion申請
X'sion申請の一覧に表示されている申請Noと比較します。
if [申請データ(ヘッダ).X'sion申請] = '000000049' then
return 1000
end
負担部門
部門コードと比較します。
明細の同項目も同じ使い方です。
if [申請データ(ヘッダ).負担部門] = 'D0001' then
return 1000
end
負担プロジェクト
プロジェクトコードと比較します。
明細の同項目も同じ使い方です。
if [申請データ(ヘッダ).負担プロジェクト] = 'P0001' then
return 1000
end
仮払金
事前申請で仮払金を希望しているかを判定します。
'希望する'または'希望しない'と比較します。
if [申請データ(ヘッダ).仮払金] = '希望する' then
return 1000
end
出張期間(開始日_YYYY/MM/DD)
出張期間の開始日をYYYY/MM/DD形式で比較します。
if [申請データ(ヘッダ).出張期間(開始日_YYYY/MM/DD)] = '2026/01/02' then
return 1000
end
出張期間(開始日_YYYY)
出張期間の開始日の年を比較します。
数値・文字列のどちらでも指定できます。
// 数値で比較
if [申請データ(ヘッダ).出張期間(開始日_YYYY)] = 2026 then
return 1000
end
// 文字列で比較
if [申請データ(ヘッダ).出張期間(開始日_YYYY)] = '2026' then
return 1000
end
出張期間(開始日_MM)
出張期間の開始日の月を比較します。
数値・文字列のどちらでも指定できます。
// 数値で比較
if [申請データ(ヘッダ).出張期間(開始日_MM)] = 1 then
return 1000
end
// 文字列で比較(ゼロ埋め)
if [申請データ(ヘッダ).出張期間(開始日_MM)] = '01' then
return 1000
end
出張期間(開始日_DD)
出張期間の開始日の日を比較します。
数値・文字列のどちらでも指定できます。
// 数値で比較
if [申請データ(ヘッダ).出張期間(開始日_DD)] = 2 then
return 1000
end
// 文字列で比較(ゼロ埋め)
if [申請データ(ヘッダ).出張期間(開始日_DD)] = '02' then
return 1000
end
出張期間(終了日_*)
終了日は開始日と同じ要領で設定します。
(YYYY/MM/DD、YYYY、MM、DD)
出張期間(出張日数)
出張期間の開始日から終了日までの日数と比較します。
1/1〜1/2の場合は2となります。
注意
手当の設定で「最終日の適用を除外する」トグルがONの場合は最終日を除外して1となります。
if [申請データ(ヘッダ).出張期間(出張日数)] = 7 then
return 1000
end
出張期間(出張日数_土日祝)
出張日数のうち、土曜日・日曜日・祝日のみの日数と比較します。
if [申請データ(ヘッダ).出張期間(出張日数_土日祝)] = 2 then
return 1000
end
出張期間(出張日数_土日祝を除く)
出張日数のうち、土曜日・日曜日・祝日以外の日数と比較します。
if [申請データ(ヘッダ).出張期間(出張日数_土日祝を除く)] = 5 then
return 1000
end
行き先
申請時に入力された行き先と比較します。
if [申請データ(ヘッダ).行き先] = '東京' then
return 1000
end
手当1
手当名と比較します。手当2〜も同じ使い方です。
if [申請データ(ヘッダ).手当1] = '【日帰】役職による日当(一律)' then
return 1000
end
精算方法
'振込'または'現金'と比較します。
if [申請データ(ヘッダ).精算方法] = '振込' then
return 1000
end
明細項目
申請の各明細行に関する項目です。[申請データ(明細).項目名]の形式で使用します。
日付(YYYY/MM/DD)
日付をYYYY/MM/DD形式で比較します。
if [申請データ(明細).日付(YYYY/MM/DD)] = '2026/01/02' then
return 1000
end
日付(YYYY)
日付の年を比較します。数値・文字列のどちらでも指定できます。
// 数値で比較
if [申請データ(明細).日付(YYYY)] = 2026 then
return 1000
end
// 文字列で比較
if [申請データ(明細).日付(YYYY)] = '2026' then
return 1000
end
日付(MM)
日付の月を比較します。数値・文字列のどちらでも指定できます。
// 数値で比較
if [申請データ(明細).日付(MM)] = 1 then
return 1000
end
// 文字列で比較(ゼロ埋め)
if [申請データ(明細).日付(MM)] = '01' then
return 1000
end
日付(DD)
日付の日を比較します。数値・文字列のどちらでも指定できます。
// 数値で比較
if [申請データ(明細).日付(DD)] = 2 then
return 1000
end
// 文字列で比較(ゼロ埋め)
if [申請データ(明細).日付(DD)] = '02' then
return 1000
end
時刻(開始時刻_HH:MM)
時刻欄の開始時刻をHH:MM形式で比較します。未入力の場合は'--:--'となります。
if [申請データ(明細).時刻(開始時刻_HH:MM)] = '01:02' then
return 1000
end
// 未入力の場合
if [申請データ(明細).時刻(開始時刻_HH:MM)] = '--:--' then
return 1000
end
時刻(開始時刻_HH)
開始時刻の「時」を比較します。数値・文字列のどちらでも指定できます。未入力の場合は''(空文字)となります。
// 数値で比較
if [申請データ(明細).時刻(開始時刻_HH)] = 1 then
return 1000
end
// 文字列で比較(ゼロ埋め)
if [申請データ(明細).時刻(開始時刻_HH)] = '01' then
return 1000
end
// 未入力の場合
if [申請データ(明細).時刻(開始時刻_HH)] = '' then
return 1000
end
時刻(開始時刻_MM)
開始時刻の「分」を比較します。数値・文字列のどちらでも指定できます。未入力の場合は''(空文字)となります。
// 数値で比較
if [申請データ(明細).時刻(開始時刻_MM)] = 2 then
return 1000
end
// 文字列で比較(ゼロ埋め)
if [申請データ(明細).時刻(開始時刻_MM)] = '02' then
return 1000
end
// 未入力の場合
if [申請データ(明細).時刻(開始時刻_MM)] = '' then
return 1000
end
時刻(終了時刻_*)
終了時刻は開始時刻と同じ要領で設定します。(HH:MM、HH、MM)
内訳
内訳コードと比較します。
if [申請データ(明細).内訳] = 'B0001' then
return 1000
end
税率
申請時に選択された税率と比較します。
if [申請データ(明細).税率] = '10%' then
return 1000
end
単価
申請時に入力された単価と比較します。
if [申請データ(明細).単価] = 1234 then
return 1000
end
数量
申請時に入力された数量と比較します。
if [申請データ(明細).数量] = 10 then
return 1000
end
交通経路(出発)
出発欄に入力された値と比較します。
if [申請データ(明細).交通経路(出発)] = '羽田空港(東京)' then
return 1000
end
交通経路(到着)
到着欄に入力された値と比較します。
if [申請データ(明細).交通経路(到着)] = '秋葉原' then
return 1000
end
金額
申請時に入力された金額と比較します。
if [申請データ(明細).金額] = 120000 then
return 1000
end
単位
通貨単位と比較します。
if [申請データ(明細).単位] = 'USD' then
return 1000
end
換算前金額
外貨の換算前金額と比較します。
if [申請データ(明細).換算前金額] = 10 then
return 1000
end
支払方法
申請時に選択された支払方法と比較します。
if [申請データ(明細).支払方法] = '従業員立替' then
return 1000
end
出張区分
'国内出張'または'海外出張'と比較します。
if [申請データ(明細).出張区分] = '国内出張' then
return 1000
end
インボイス登録番号
申請時に入力されたインボイス登録番号と比較します。
if [申請データ(明細).インボイス登録番号] = 'T4011001069219' then
return 1000
end
取引先名
申請時に入力された取引先名と比較します。
if [申請データ(明細).取引先名] = '株式会社◯◯' then
return 1000
end
数値・文字・コメント
数値と文字
-
数値:そのまま記述します(例: 10000)
-
文字:シングルクォート'またはダブルクォート"で囲みます(例: 'A0001')
コメント
計算式に補足説明を書くことができます。//以降がコメントとして扱われ、計算に影響しません。
if [申請者役職情報.役職コード] = 'A0001' then
// 役職が社長の場合、1万円
return 10000
elseif [申請者役職情報.役職コード] = 'A0002' then
if [申請者部門情報.部門コード] = 'B0001' then
// A部門の場合
return 5500
else
// その他部門の場合
return 5000
end
elseif [申請者役職情報.役職コード] = 'A0003' or [申請者役職情報.役職コード] = 'A0004' then
// 役職が課長または係長の場合
return 2500
else
// その他の場合
return 1000
end
変数
変数はデータを一時的に格納する箱のようなものです。
複雑な計算式で、値を使いまわしたい場合に便利です。
変数名のルール
-
半角英数とアンダーバー_のみ使用可能
-
先頭に数字は使用不可
my_value = 1 + 2 // 3を変数にセット
if [申請者役職情報.役職コード] = 'A0001' then
return my_value * 1000 // 計算結果は3000
end
if [申請者役職情報.役職コード] = 'A0002' then
my_value = my_value * 2 // 6を変数にセット
end
return my_value // 計算結果は6
その他の設定
|
設定項目 |
説明 |
|---|---|
|
テーマ |
計算式入力欄の配色テーマを選択できます。 |
|
整形 |
入力した計算式の見た目を整えます。 |
|
端数処理 |
計算結果に小数が発生した場合の処理方法を選択できます。(切り捨て / 切り上げ / 四捨五入) |
|
構文チェック |
計算式の有効性をチェックします。エラーが検出された場合は、メッセージに従って修正してください。 |
|
お試し実行 |
入力した計算式を、登録前にお試しで実行できます。 |
お試し実行
お試し実行は、計算式の動作を確認するための機能です。
項目の値を指定して計算式をテストできます。