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)}}
機能:
- 数値を千単位でカンマ区切りにフォーマット
- 例:
1234567
→1,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'}}