KARTE MassPushでは、メッセージテンプレート内でHandlebarsカスタムヘルパーを使用できます。これらのヘルパーは、動的なコンテンツ生成や条件分岐、データの整形などを可能にします。

利用可能なカスタムヘルパー

日付・時刻関連ヘルパー

getDate

現在の日付を取得します。様々な日付フォーマットを受け入れ、常に統一された形式で出力します。

<!-- 基本的な使用例 -->
{{getDate 'today'}}           <!-- 今日の日付 -->
{{getDate 'yesterday'}}       <!-- 昨日の日付 -->

<!-- 日付文字列の正規化 -->
{{getDate '2024-01-15'}}      <!-- ISO形式 -->
{{getDate '2024/01/15'}}      <!-- スラッシュ区切り -->
{{getDate '01/15/2024'}}      <!-- 米国式 -->

<!-- DateAddと組み合わせた使用例 -->
{{DateAdd (getDate 'today') 7}}

サポートする入力値:

  • 特別なキーワード: 'today', 'yesterday'
  • 日付フォーマット:
    • '2024-01-15' (ISO形式)
    • '2024/01/15' (スラッシュ区切り)
    • '01/15/2024' (米国式)
    • '2024-01-15 10:30:45' (時刻付き、時刻部分は無視)
    • '2024-01-15T10:30:45Z' (ISO8601形式)

返り値:

  • 常に 'YYYY-MM-DD' 形式(例:'2024-01-15'

DateFormat

日付を指定された形式でフォーマットします。

<!-- 基本的な使用例 -->
{{DateFormat dateField 'YYYY年MM月DD日'}}

<!-- 文字列リテラルと変数の組み合わせ -->
{{DateFormat 'today' formatString}}

使用例:

  • {{DateFormat order_date 'YYYY-MM-DD'}} → 注文日を「2024-03-15」形式で表示
  • {{DateFormat created_at 'YYYY年MM月DD日'}} → 作成日を「2024年03月15日」形式で表示

DateAdd

指定された日付に日数を加算します。

<!-- 基本的な使用例 -->
{{DateAdd order_date 7}}

<!-- 変数を使用した例 -->
{{DateAdd baseDate amount}}

<!-- ネストした使用例 -->
{{DateAdd (getDate 'today') 7}}

パラメータ:

  • 第1引数: 基準日(変数または関数)
  • 第2引数: 加算する日数(整数または数値文字列)

重要な注意事項:

  • 単位は日数固定です。時間や分単位の加算はサポートされていません
  • 第2引数は整数または数値形式の文字列を受け付けます
  • 文字列として渡される場合、自動的に整数に変換されます(例:'7'7
  • 小数や数値に変換できない文字列は使用できません

DateSub

指定された日付から日数を減算します。

<!-- 基本的な使用例 -->
{{DateSub order_date 7}}

<!-- ネストした使用例 -->
{{DateSub (getDate 'today') 3}}

パラメータ:

  • 第1引数: 基準日(変数または関数)
  • 第2引数: 減算する日数(整数または数値文字列)

重要な注意事項:

  • 単位は日数固定です。時間や分単位の減算はサポートされていません
  • 第2引数は整数または数値形式の文字列を受け付けます
  • 文字列として渡される場合、自動的に整数に変換されます(例:'7'7
  • 小数や数値に変換できない文字列は使用できません

数値関連ヘルパー

NumberFormat

数値をカンマ区切り(千単位)でフォーマットします。

<!-- 基本的な使用例 -->
{{NumberFormat userCount}}
{{NumberFormat totalAmount}}

<!-- ネストした関数との組み合わせ -->
{{NumberFormat (add totalAmount taxAmount)}}

機能:

  • 数値を千単位でカンマ区切りにフォーマット
  • 例: 12345671,234,567
  • フォーマット文字列は指定不可(カンマ区切りのみ)

制限:

  • 整数のみ対応(int、int32、int64)
  • 小数(float64、float32)は使用できません

比較・条件分岐ヘルパー

compare

2つの値を比較します。条件分岐でよく使用されます。

<!-- 等価比較 -->
{{#if (compare a '==' b)}}equal{{/if}}

<!-- 数値比較 -->
{{#if (compare user.age '>' 18)}}adult{{/if}}

<!-- 不等価比較 -->
{{#if (compare status '!=' 'active')}}inactive{{/if}}

<!-- 複雑な比較 -->
{{#if (compare (length items) '>' 0)}}has items{{/if}}

対応演算子:

  • '==' : 等しい
  • '!=' : 等しくない
  • '>' : より大きい
  • '>=' : 以上
  • '<' : より小さい
  • '<=' : 以下

not

論理否定を行います。

<!-- 基本的な使用例 -->
{{#if (not flag)}}false{{/if}}

isDefined

変数が定義されているかを確認します。

<!-- 基本的な使用例 -->
{{#if (isDefined user.profile)}}has profile{{/if}}

配列・文字列操作ヘルパー

isIncluding

配列に特定の値が含まれているかを確認します。

<!-- 基本的な使用例 -->
{{#if (isIncluding array value)}}included{{/if}}

<!-- オブジェクトプロパティとの組み合わせ -->
{{#if (isIncluding allowedIds user.id)}}allowed{{/if}}

パラメータ:

  • 第1引数: 配列
  • 第2引数: 検索する値

length

配列またはスライスの長さを取得します。

<!-- 配列の長さ確認 -->
{{#if (compare (length items) '>' 0)}}has items{{/if}}

<!-- ネストしたプロパティの長さ -->
{{#if (compare (length user.tags) '==' 1)}}single tag{{/if}}

注意: 文字列の長さは取得できません。配列のみ対応しています。

like

文字列の部分一致検索を行います。

<!-- 基本的な使用例 -->
{{#if (like searchTerm fullText)}}found{{/if}}

<!-- 固定文字列との比較 -->
{{#if (like user.name 'admin')}}is admin{{/if}}

matchRegEx

正規表現によるパターンマッチングを行います。

<!-- メールアドレスの検証 -->
{{#if (matchRegEx emailField '.*@.*')}}valid email{{/if}}

<!-- 電話番号の検証 -->
{{#if (matchRegEx user.phone '^\\d{10}$')}}valid phone{{/if}}

算術演算ヘルパー

mod

剰余(余り)を計算します。

<!-- 奇数偶数の判定 -->
{{#if (compare (mod index 2) '==' 1)}}odd{{/if}}

<!-- 倍数判定 -->
{{#if (compare (mod count 3) '==' 0)}}divisible by 3{{/if}}

制限:

  • 整数のみ対応(int、int32、int64、整数形式の文字列)
  • 小数(float64、float32)や小数点を含む文字列は使用できません
  • 除数が0の場合はエラーになります

ユーティリティヘルパー

define

変数を定義します。

<!-- 計算結果の保存 -->
{{define 'temp' calculatedValue}}

<!-- ネストした関数結果の保存 -->
{{define 'userCount' (length users)}}

strict

厳密な型チェックを行います。

{{strict value}}

複雑な使用例

ネストしたヘルパーの組み合わせ

<!-- 複数条件の組み合わせ -->
{{#if (not (compare (length items) '==' 0))}}
  アイテムが存在します
{{/if}}

<!-- 算術演算と条件分岐 -->
{{#if (compare (mod (length array) 2) '==' 1)}}
  配列の要素数は奇数です
{{/if}}

<!-- 日付計算の組み合わせ -->
{{DateAdd (DateSub baseDate 7) 5}}

条件式の複雑な組み合わせ

<!-- 存在チェックと否定 -->
{{#if (not (compare (isDefined user.name) '==' false))}}
  ユーザー名が定義されています
{{/if}}

<!-- 文字列検索と真偽値比較 -->
{{#if (compare (like searchTerm title) '==' true)}}
  タイトルにマッチしました
{{/if}}

よくあるご質問

Q:LINEエディタでヘルパーを利用するとエラーが発生しました

ヘルパーの定数指定の際に「"(ダブルクォート)」を利用するとエラーになることがわかっています。「'(シングルクォート)」をご利用ください。

例: ✗{{getDate "today"}} → ◯ {{getDate 'today'}}