在 meta 標籤中使用內嵌的欄位表示式

您可以在表示式標籤本身內嵌現行及前一個欄位值標籤。欄位值切勿包含單引號或雙引號。如果欄位值包含奇數個單引號或雙引號,該值可能導致表示式錯誤; 將無法正確驗證 EmailPlusTemplate 範本。這是 EmailPlus 套件的一項已知限制。

較好的方式是使用 EmailPlus 函數來評估欄位值。如果您要比較欄位值,請使用 quotemeta() Perl 函數來跳出任何非英數字元,以確保表示式能夠獲得正確評估。例如,若欄位值不包含單引號或雙引號,則可正確評估下列表示式:

#@expression::if (#?Description?# ne #%Description%#) { "Description field has changed\n" .#%Description%#; }@#
不過,如果您不確定欄位值是否包含單引號或雙引號,則下列範例是建議使用的表示式:
#@expression::if (quotemeta(Gfv("Description")) ne quotemeta(Gfov("Description"))) { "Description field has changed\n" .Gfov("Description"); }@#

再舉另一個範例,假設您想要顯示問題報告記錄中的提交日期,但不想要使用預設日期格式。您想要改以不同的格式顯示日期。這裡是使用 meta 標籤的一個簡易範例表示式:

#@expression::use Date::Format;use Date::Parse; ctime( str2time( #?SubmitDate?# ));@#

這展開為下列範例。它在語法上是有效的表示式。並會傳回日期物件。

#@expression::use Date::Format;use Date::Parse; ctime( str2time( "2010-07-12 10:45:18" ));@#

評估此表示式時,它會傳回下列資訊,此資訊會替換成輸出訊息:

Mon Jul 12 10:45:18 2010

下表列出在 meta 標籤內展開舊欄位或現行欄位值時所傳回的各種資料類型。

表 1. 在 meta 標籤內傳回的 EmailPlus 資料類型
欄位類型 傳回的表示式
INT 整數,例如 54
DATE_TIME "YYYY-MM-DD hh:mm:ss" 格式 的 24 小時日期字串,例如 "2012-10-20 15:23:04"
SHORT_STRING、MULTILINE_STRING、ID、STATE、RECORDTYPE、DBID、REFERENCE 及任何其他未指定的類型 雙引號內的字串值,例如:"some text"。在內嵌於原始欄位值之雙引號內的字串會正確處理,以產生語法正確的字串值。
REFERENCE_LIST 雙引號內之含括值陣列的參照,例如 ["value 1", "value 2" ]

意見