Visualforce形式のメールテンプレートを作成しているときに、いくつか表示のフォーマットで苦労したので、メモしておこうと思います。
特に、差込項目としてそのままだと、なかなか思ったように表示させることができませんでした。
日時(Datetime)項目が欧米式のフォーマットで表示されてしまう
日時(Datetime)項目をそのまま表示すると、「Sun Jan 01 05:51:00 GMT 2017」のようにGMTで、しかも欧米式のフォーマットで表示されてしまいます。
「2017/01/01 14:51:22」のように表示するにはどうしたらいいでしょう?
Visualforceでは、「outputtext」を使うと、フォーマットを指定できます。
(※下記では、ColDatetime__cが日時項目だとします)
さらに、時間の加算も出来るので、標準時+9時間だと、(9/24)で日本時間にすることができます。
<!-- 日本時間での日時表示 --> <apex:outputtext value="{0, date, yyyy/MM/dd HH:mm:ss}"> <apex:param value="{!relatedTo.ColDatetime__c+(9/24)}"></apex:param> </apex:outputtext>
整数の数値項目が小数点付きで表示されてしまう
数値項目は、「5.0」のように、小数点付きで表示されてしまいます。
オブジェクトの項目の定義で、小数点以下の桁数を0桁に変更しても変わりません。
そのような場合は、
<!-- 数値のカンマ区切り --> <apex:outputtext value="{0, number, ###,###}"> <apex:param value="{!relatedTo.Number__c}"></apex:param> </apex:outputtext> <!-- 数値の0埋め表示 --> <apex:outputtext value="{0, number, 000000}"> <apex:param value="{!relatedTo.Number__c}"></apex:param> </apex:outputtext>
なお、もっと複雑なことをしたい場合は、コンポーネントを使うと簡単に実装できます。
やり方は「SalesforceのVisualforce Emailテンプレートで、コンポーネントを使用しpicklistの翻訳を取得する」を参考にしてください。