添付ファイル名をSubjectにしたいNo.43509
styth さん 12/11/08 11:02
 
 あるフォルダの全メールについて、添付ファイル名をSubjectにしたいのですが、
マクロでやるにはどうすれば良いんでしょうか?
 但し、Subjectが付いているものは除外したいのですが、よろしくお願いします。

[ ]
RE:43509 添付ファイル名をSubjectにしたNo.43510
秀まるお2 さん 12/11/08 11:40
 
 選択したメール(複数可)について処理するタイプのマクロだと以下のように
なります。

 メールを書き換えるマクロになるので、もしマクロにバグがあるとメールが壊
れる可能性があります。一度ダミーデータを作って動作確認することをお勧めし
ます。


    loaddll "tkinfo.dll";
    #n = dllfunc("LockSelection");
    while(1) {
        #n = dllfunc("EnumSelection", 1);
        if( #n == 0 ) {
            break;
        }
        $subj = dllfuncstr("CurrentHeader", "Subject");
        if( $subj == "" ) {
            $attach = dllfuncstr("CurrentHeader", "X-Attach");
            if( $attach != "" ) {
                #base = strrstr($attach, "\\");
                if( #base > 0 ) {
                    $attach = midstr($attach, #base+1, 9999);
                }
                #n = dllfunc("BeginEditMail");
                #n = dllfunc("SetHeader", "Subject", $attach);
                #n = dllfunc("SaveEditMail");
            }
        }
    }
    #n = dllfunc("UnlockSelection", 1);

[ ]
RE:43510 添付ファイル名をSubjectにしたNo.43511
styth さん 12/11/08 12:11
 
> メールを書き換えるマクロになるので、もしマクロにバグがあるとメールが壊
>れる可能性があります。一度ダミーデータを作って動作確認することをお勧めし
>ます。
 ありがとうございます。うまくいきました。

 ところで、添付ファイル名の先頭8文字(半角数字)yyyymmddになっています。
 この数字をDateにするにはどうすれば良いんでしょうか?
 よろしくお願いします。

[ ]
RE:43511 添付ファイル名をSubjectにしたNo.43512
秀まるお2 さん 12/11/08 12:55
 
 意味がよく分かりませんが,たとえば添付ファイルのファイル名が、

 20121108サンプル.txt

 みたいな名前になっているとして、それを

 Dateサンプル.txt

 にしたいってことですかね?。「この数字をDateにする」って意味をそのまん
ま言葉通り解釈するとそうなってしまいますけど。

 2012年11月08日サンプル.txt

 とかに変えたいとかですかね。

[ ]
RE:43512 添付ファイル名をSubjectにしたNo.43513
秀まるお2 さん 12/11/08 13:01
 
 Date:ヘッダを書き換えるって意味ですね。

 了解しました。

[ ]
RE:43513 添付ファイル名をSubjectにしたNo.43515
秀まるお2 さん 12/11/08 19:16
 
 とりあえず作りました。

 テストが多少手抜きなので、それなりにテストしていただいた方がいいかと思
います。一応、添付ファイル・ファイル名の先頭8桁が数字になってないケース
でちゃんと書き換えないように動作するかのテストくらいはしました。


    $mon = "JanFebMarAprMayJunJulAugSepOctNovDec";
    loaddll "tkinfo.dll";
    #n = dllfunc("LockSelection");
    while(1) {
        #n = dllfunc("EnumSelection", 1);
        if( #n == 0 ) {
            break;
        }
        $attach = dllfuncstr("CurrentHeader", "X-Attach");
        if( $attach != "" ) {
            #base = strrstr($attach, "\\");
            if( #base > 0 ) {
                $attach = midstr($attach, #base+1, 9999);
            }
            $date = leftstr( $attach, 8 );
            if( strlen($date) == 8 ) {
                call CheckAllNumber $date;
                if( ##return ) {
                    #mon = val(midstr($date, 4, 2)) - 1;
                    $edate = midstr($date, 6, 2)
                           + " " + midstr($mon, #mon * 3, 3)
                           + " " + leftstr($date, 4);
                    #n = dllfunc("BeginEditMail");
                    #n = dllfunc("SetHeader", "Date", $edate);
                    #n = dllfunc("SaveEditMail");
                }
            }
        }
    }
    #n = dllfunc("UnlockSelection", 1);
    endmacro;

CheckAllNumber:
    ##len = strlen($$1);
    ##i = 0;
    while( ##i < ##len ) {
        ##c = ascii( midstr( $$1, ##i, 1 ) );
        if( ##c < '0' || ##c > '9' ) {
            return 0;
        }
        ##i = ##i + 1;
    }
    return 1;

[ ]
RE:43515 添付ファイル名をSubjectにしたNo.43521
styth さん 12/11/09 09:12
 
> とりあえず作りました。
> テストが多少手抜きなので、それなりにテストしていただいた方がいいかと思
>います。一応、添付ファイル・ファイル名の先頭8桁が数字になってないケース
>でちゃんと書き換えないように動作するかのテストくらいはしました。
 早速作って頂き、ありがとうございます。できました。

[ ]