最近メール本文から情報を抽出する事例をやったので、備忘録です。
文字列から対象の文字列を抽出して、テーブルの各フィールドにセットします。
テーブル構成は、次の通りです。
フィールド名 | タイプ |
---|---|
本文 | テキスト |
名前 | 計算 |
(名前フィールドはテキストタイプでも計算でもどっちでもOK)
例えば、以下のような本文フィールドにメール内容をセットした際、名前フィールドには本文から抽出した名前がセットされるように処理をします。
本文は、以下のような例文とします。
お申し込みありがとうございます。
以下の内容で承りました。
[お名前] なんとか かんとか
[生年月日] 2000/1/1
名前フィールドの計算式として、Letの中で抽出する文字列の識別子となる「[」と「]」に囲まれた開始文字位置と終了文字位置をpositionで求め、識別子分の文字数をLengthで求めた後、Middleで本文から識別子以降の該当の文字列を抽出します。
Let (
[
moji% = "[お名前]" ;
pos_start% = Position ( 本文 ; moji% ; 1 ; 1 ) ;
moji_cnt% = Length ( moji% ) ;
pos_end% = Position ( 本文 ; "¶" ; pos_start% ; 1 ) - 1 ;
] ;
if(pos_start% ≠ 0;Middle ( 本文 ; pos_start% + moji_cnt% ; pos_end% - ( pos_start% + moji_cnt% ) + 1 ) ;
)
ちなみに、「[お名前]」が本文になかったことを考え、開始ポジションが取得できたときのみ処理しています。
あと、「[お名前]」の他に「[名前]」のような識別子が混在していた場合は、また今度。