> ## Documentation Index
> Fetch the complete documentation index at: https://docs.get-clara.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# 数式フィールド

> ネイティブ対応が提供されるまで、ワークフローを使って数式フィールドを作成します。

Twenty は現時点でネイティブの数式フィールドをまだサポートしていません（2026 年に提供予定）ですが、ワークフローを使えば同等の結果を実現できます。 この回避策により、単純な連結から複雑なビジネスロジックまで、フィールド値を自動計算して入力できます。

## 一般的な使用例

| ユースケース       | 数式例                          |
| ------------ | ---------------------------- |
| **氏名**       | First Name + " " + Last Name |
| **見込み金額**    | Amount × Probability         |
| **期日までの日数**  | Due Date - Today             |
| **ステージ滞在日数** | Today - Stage Entry Date     |
| **リードスコア**   | 複数の基準に基づくポイント                |

<Tip>
  パイプラインのステージでの時間を追跡する完全な例については、[商談が各ステージにとどまる時間を追跡](/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage) を参照してください。
</Tip>

## 基本の式：連結

### 例：氏名を自動入力

**目的**: 名と姓を自動的に結合して氏名フィールドにする。

### セットアップ

1. **トリガー**: レコードが更新または作成される（People）

2. **フィルター**: 名または姓が変更されたかを確認

3. **コードアクション**:

```javascript theme={null}
export const main = async (params) => {
  const { firstName, lastName } = params;

  const fullName = [firstName, lastName]
    .filter(Boolean)
    .join(' ');

  return { fullName };
};
```

4. **レコードを更新**: 氏名を `{{code.fullName}}` に設定

## 数値の式：見込み金額

### 例：見込み収益を計算

**目的**: 商談金額に確度を掛けて見込み金額を算出する。

ワークフロー全体については、[パイプラインで見込み金額を表示する方法](/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline) を参照してください。

### クイックセットアップ

1. **トリガー**: レコードが更新される（Opportunities、Amount または Probability フィールド）

2. **コードアクション**:

```javascript theme={null}
export const main = async (params) => {
  const { amount, probability } = params;

  const expectedAmount = (amount || 0) * (probability || 0) / 100;

  return { expectedAmount };
};
```

3. **レコードを更新**: 見込み金額を `{{code.expectedAmount}}` に設定

## 日付の式：日数計算

### 例：タスクの期日までの日数

**目的**: タスクの期日まで残り何日かを計算する。

### セットアップ

1. **トリガー**: レコードが更新または作成される（Tasks、Due Date フィールド）

2. **コードアクション**:

```javascript theme={null}
export const main = async (params) => {
  const { dueDate } = params;

  if (!dueDate) {
    return { daysUntilDue: null };
  }

  const due = new Date(dueDate);
  const today = new Date();
  const diffTime = due - today;
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return { daysUntilDue: diffDays };
};
```

3. **レコードを更新**: 期日までの日数を `{{code.daysUntilDue}}` に設定

<Note>
  負の値は期限超過のタスクを示します。 このフィールドを使用して、緊急度でタスクをフィルターまたは並べ替えることができます。
</Note>

## 条件付き式：リードスコア

### 例：条件に基づいてリードスコアを計算

**目的**: 企業規模、業種、エンゲージメントに基づいてリードにスコアを付与する。

### セットアップ

1. **トリガー**: レコードが更新される（People または Companies）

2. **コードアクション**:

```javascript theme={null}
export const main = async (params) => {
  const { companySize, industry, hasEmail, hasPhone, source } = params;

  let score = 0;

  // Company size scoring
  if (companySize === 'Enterprise') score += 30;
  else if (companySize === 'Mid-Market') score += 20;
  else if (companySize === 'SMB') score += 10;

  // Industry scoring
  const targetIndustries = ['Technology', 'Finance', 'Healthcare'];
  if (targetIndustries.includes(industry)) score += 25;

  // Contact info scoring
  if (hasEmail) score += 10;
  if (hasPhone) score += 15;

  // Source scoring
  if (source === 'Referral') score += 20;
  else if (source === 'Website') score += 10;

  return { leadScore: score };
};
```

3. **レコードを更新**: リードスコアを `{{code.leadScore}}` に設定

## テキストの式：ドメイン抽出

### 例：メールからドメインを抽出

**目的**: メールのドメインを自動抽出して保存する。

### セットアップ

1. **トリガー**: レコードが更新される（People、Email フィールド）

2. **コードアクション**:

```javascript theme={null}
export const main = async (params) => {
  const { email } = params;

  if (!email) return { domain: null };

  const domain = email.split('@')[1]?.toLowerCase();

  return { domain };
};
```

3. **レコードを更新**: ドメインフィールドを `{{code.domain}}` に設定

## ベストプラクティス

### パフォーマンス

* 関連するフィールド変更時のみトリガーする
* 計算が不要なレコードをスキップするためにフィルターを使用する
* 大量のワークフローでは複雑な計算を避ける

### エラーハンドリング

* 計算の前に null/undefined の値を確認する
* データが欠落している場合はデフォルト値を使用する
* 計算が失敗したときは明確なエラーメッセージを返す

### テスト

* エッジケース（空のフィールド、ゼロ値）でテストする
* 有効化する前に計算を手動で検証する
* 意図しない結果がないかワークフローの実行を監視する

## 関連

* [パイプラインで見込み金額を表示する方法](/l/ja/user-guide/views-pipelines/how-tos/show-expected-amount-in-pipeline)
* [ステージ内の時間を追跡する方法](/l/ja/user-guide/views-pipelines/how-tos/track-time-in-stage)
* [ワークフローのアクション](/l/ja/user-guide/workflows/capabilities/workflow-actions)
