よく使われるカスタムフィールドでの数式の種類の例 Permalink
このガイドでは、Quire でコスト計算、値の結合、時刻の計測、条件分岐、タスクデータの整理を行うための実践的な数式の例を紹介します。各例では、数式がタスクの生データをどのように有意義な情報へと変換できるかを示しています。
コスト計算
タスクとそのすべての子タスクの合計コストを計算するには、2 つのカスタムフィールドが必要です。
- Cost カスタムフィールドを作成します。
- フィールドタイプ:Number
- 小数点以下の桁数:2
- Total Cost カスタムフィールドを作成します。
- フィールドタイプ:カスタムフィールドでの数式の種類
- 次の数式を入力します(以下の数式を参照):
SUM(subtasks.{Total Cost}, Cost)
この数式は、タスク自身のコストにすべての子タスクのコストの合計を加算します。
Quire の数式で使用できるすべての関数をご覧ください。
1 つのフィールドに複数の値を表示する
配列数式を使うと、複数の値を一度に表示または計算できます。配列とは、タスク、数値、テキスト値などのアイテムのコレクションです。
例: 特定のタスクを 1 つのフィールドに表示する
[#2, #23]
指定したタスクをリストとして返します。
ヒント: 数式ではタスク識別子 #task_ID を使ってタスクを指定できます。
配列を使った計算
配列数式を使うと、同じ操作を複数のアイテムに同時に適用できます。
例: 複数のタスクの期限の日を取得する
[#2, #23].due
これは以下と同等です:
[#2.due, #23.due]
配列を使うことで繰り返しが減り、数式の可読性が向上します。
データのコレクションのリスト表示や計算を行う Quire の配列数式についてさらに詳しく学びましょう。
期間の計算
2 つの日付間の期間をさまざまな単位で計算できます。
例: 日数で期間を計算する
(due - start).days
開始日と期限日の間の日数を返します。
注意: 結果は切り上げられます(実際の値以上の最小の整数に丸められます)。たとえば 1 時間の期間は 1 日としてカウントされます。
より精度の高い期間計算
より正確な結果を得るには、数式を調整できます。
例: 時間を日数に変換する
(due - start).hours / 24
日付情報の抽出
日付フィールドから個別のコンポーネントを抽出できます。抽出できる項目は以下のとおりです:
- Year(年)
- Month(月)
- Day(日)
- Hour(時)
- Minute(分)
- Second(秒)
- Weekday(曜日)
例: 期限の日の曜日を取得する
due.weekday
注意: 曜日の値は数値形式に従います(1 = 月曜日、2 = 火曜日、以降同様)。
稼働日数の計算
WORKDAYS 関数を使って 2 つの日付間の稼働日数を計算します。
WORKDAYS(start, due)
開始日と期限の日が同じ場合、結果は 1 日 になります。
今日の日付を使う
例:
WORKDAYS(<today>, <tomorrow>)
2 日を返します。
週末のカスタム設定
週末とみなす曜日を定義できます。
WORKDAYS(start, due, weekend)
weekend を以下のいずれかの値に置き換えてください(以下は利用可能な値の一覧です):
| ウィークエンドコード | 週末とみなされる曜日 |
|---|---|
| 1 | 土、日 |
| 2 | 日、月 |
| 7 | 金、土 |
| 9 | 金、日 |
| 11 | 日 |
| 16 | 金 |
条件ロジック
条件演算子 ?: を使うと、条件に応じて異なる結果を返せます。これは IF 文と同様に機能します。
2 つの結果を設定でき、条件が真の場合は最初の結果が、偽の場合は 2 番目の結果が表示されます。
例:費やした時刻に基づいて状態インジケーターを表示する(タスクの合計費やした時刻が 5 時間を超えた場合)
timeSpent > 5h ? "🔴" : "🟢"
- 条件:
timeSpent > 5h - 真の場合の結果:🔴
- 偽の場合の結果:🟢
値の並び替えと順序付け
SORT 関数を使って値を昇順に並べ替えます。
たとえば、4 つの子タスクがあり、それぞれの期限の日が 9 月 1 日、8 月 23 日、9 月 1 日、7 月 30 日の場合:
SORT(subtasks.due)
結果:子タスクの期限の日が最も早い日から最も遅い日の順に並び替えられ、フィールドにすべての期限の日が表示されます。
Jul 30, Aug 23, Sep 1, Sep 1
重複の削除
SORT と DISTINCT 関数を組み合わせます。
結果を見ると、同じ期限の日(9 月 1 日)を持つ 2 つの子タスクがあることがわかります。 次を試してみましょう:
DISTINCT(SORT(subtasks.due))
結果:
Jul 30, Aug 23, Sep 1
期限の日で並び替える
order by 演算子を使用します。
subtasks order by any.due
子タスクを見つけて期限の日順に並び替えます。
注意: order by 演算子と共に any 識別子を使うと、並び替えに使用するフィールドを指定できます。
Quire の数式で使用できるすべての演算子と関数をご覧ください。
よくある質問
Quire の数式フィールドに複数のタスクの値を表示するにはどうすればよいですか?
配列構文を使用します — [#2, #23].due はタスク #2 と #23 の期限の日をリストとして取得します。詳細は Quire の配列数式をご覧ください。
Quire でタスクとその子タスクの合計コストを計算するにはどうすればよいですか?
「Cost」という名前の数値フィールドと「Total Cost」という名前の数式フィールドを作成し、SUM(subtasks.{Total Cost}, Cost) と入力します。
Quire でタスクの開始日から期限の日までの日数を計算するにはどうすればよいですか?
全日数(切り上げ)には (due - start).days を使用し、より精度が必要な場合は (due - start).hours / 24 を使用してください。
Quire で 2 つの日付間の稼働日数を計算するにはどうすればよいですか?
WORKDAYS(start, due) を使用します。週末とみなす曜日をカスタマイズするには 3 番目の引数にウィークエンドコードを追加します — たとえば WORKDAYS(start, due, 7) とすると金曜日と土曜日が週末として扱われます。
Quire の数式で曜日や月などの日付コンポーネントを抽出するにはどうすればよいですか?
ドット記法を使用します — due.weekday は曜日の数値を返します(1 = 月曜日、7 = 日曜日)。同じ方法で year(年)、month(月)、day(日)、hour(時)、minute(分)、second(秒)も取得できます。
Quire で条件付きの数式を書くにはどうすればよいですか?
?: 演算子を使用します — timeSpent > 5h ? "🔴" : "🟢" は費やした時刻が 5 時間を超えると赤いインジケーターを表示し、それ以外の場合は緑を表示します。
Quire の数式で子タスクの値を並び替えるにはどうすればよいですか?
SORT(subtasks.due) を使って昇順に並び替えます。重複を除去するには DISTINCT() で囲んでください:DISTINCT(SORT(subtasks.due))。