SyntaxHighlighter

2012年6月28日木曜日

メールヘッダーの日付 | FileMaker

メールヘッダーの日付は、


Thu, 28 Jun 2012 12:42:52 +0900
28 Jun 2012 12:18:36 +0900
Wed, 27 Jun 2012 12:42:52 +0900
Tue, 26 Jun 2012 08:54:11 +0900
Mon, 25 Jun 2012 20:20:12 +0900 (JST)
17 Mar 2012 11:08:50 +0900

こんな感じで記載されている。

これをファイルメーカーのタイムスタンプ形式に変換していたけど、たまにエラーになっていたので修正!

スクリプト例:1
(ファイルメーカーの機能だけで変換)


  • 変数を設定 [ $dateValue; 値:Substitute ( MailTemp::Date変換前 ; " "; ¶ ) ]
  • If [ IsEmpty ( $dateValue ) ]
  • 現在のスクリプト終了 [ ]
  • End If
  • #
  • 変数を設定 [ $n; 値:1 ]
  • Loop
  • 変数を設定 [ $M; 値:GetValue( $dateValue ; $n ) ]
  • 変数を設定 [ $M; 値:Case ( $M= "Jan"; 1 ; $M= "feb"; 2 ; $M= "Mar"; 3 ; $M= "Apr"; 4 ; $M= "May"; 5 ; $M= "Jun"; 6 ; $M= "Jul"; 7 ; $M= "Aug"; 8 ; $M= "Sep"; 9 ; $M= "oct" ; 10 ; $M= "Nov" ; 11 ; $M= "Dec" ; 12 ; "" ) /* 月 英語 略称 1月 January Jan. 2月 February Feb. 3月 March Mar. 4月 April Apr. 5月 May May 6月 June Jun. 7月 July Jul. 8月 August Aug. 9月 September Sep. 10月 October Oct. 11月 November Nov. 12月 December Dec. */ ]
  • Exit Loop If [ $M ]
  • 変数を設定 [ $n; 値:$n+1 ]
  • End Loop
  • #
  • 変数を設定 [ $D; 値:GetValue( $dateValue ; $n -1) ]
  • 変数を設定 [ $Y; 値:GetValue( $dateValue ; $n+1 ) ]
  • 変数を設定 [ $date; 値:Date ( $M ; $D ; $Y ) ]
  • #
  • 変数を設定 [ $time; 値:GetValue( $dateValue ; $n+2 ) ]
  • フィールド設定 [ MailTemp::Date変換後; Timestamp ( $date ; $time) ]



正規表現を使ったほうが楽かな?と思って...


スクリプト例:2
(メール受信プラグインMailMakerPop+の正規表現を使用)

  • 変数を設定 [ $dateValue; 値:MailTemp::Date変換前 ]
  • If [ IsEmpty ( $dateValue ) ]
  • 現在のスクリプト終了 [ ]
  • End If
  • #正規表現OPTIN設定|IgnoreCase:大文字・小文字を区別しない
  • 変数を設定 [ $er; 値:iill_rxSetRegexOptions( "IgnoreCase" )/* IgnoreCase | Singleline | Compiled | CultureInvariant | ECMAScript | ExplicitCapture | IgnorePatternWhitespace | Multiline | RightToLeft*/ ]
  • 変数を設定 [ $date; 値:iill_rxRegexMatch( "([0-3]?[0-9])\s(Jan|feb|Mar|Apr|May|Jun|Jul|Aug|Sep|oct|Nov|Dec)\s\d{4}" ; $dateValue ) ]
  • 変数を設定 [ $date; 値:Substitute ( $date ; " " ; ¶ ) ]
  • 変数を設定 [ $D; 値:GetValue( $date ; 1) ]
  • 変数を設定 [ $M; 値:GetValue( $date ; 2) ]
  • 変数を設定 [ $M; 値:Case ( $M= "Jan"; 1 ; $M= "feb"; 2 ; $M= "Mar"; 3 ; $M= "Apr"; 4 ; $M= "May"; 5 ; $M= "Jun"; 6 ; $M= "Jul"; 7 ; $M= "Aug"; 8 ; $M= "Sep"; 9 ; $M= "oct" ; 10 ; $M= "Nov" ; 11 ; $M= "Dec" ; 12 ; "" ) /* 月 英語 略称 1月 January Jan. 2月 February Feb. 3月 March Mar. 4月 April Apr. 5月 May May 6月 June Jun. 7月 July Jul. 8月 August Aug. 9月 September Sep. 10月 October Oct. 11月 November Nov. 12月 December Dec. */ ]
  • 変数を設定 [ $Y; 値:GetValue( $date ; 3) ]
  • 変数を設定 [ $date; 値:Date ( $M ; $D ; $Y ) ]
  • #
  • 変数を設定 [ $time; 値:iill_rxRegexMatch( "(2[0-3]|[01]?[0-9]):[0-5][0-9]:[0-5][0-9]" ; $dateValue ) ]
  • フィールド設定 [ MailTemp::Date変換後; Timestamp ( $date ; $time) ]

(メ・ん・)?よけいにに長くなってしまいました!残念!

0 件のコメント:

コメントを投稿