追加希望:csvexport-v201No.47367
のろやま さん 15/01/17 13:21
 
いつも、便利に利用させて頂いております。m(__)m
csvexport-v201マクロにおいて、メールアドレスを抽出すると
○○○<メールアドレス>の形式で出力される仕様です。

<>内の実メールアドレスのみを抽出することができれば、非常に嬉しいのですが、対
応は可能でしょうか。
また、各メールアドレス「,」区切りでなく、が1行毎に改行することができれば、
更に嬉しいです。

もし、上記のような対応が可能であれば、ぜひご対応いただけると助かります。
ご検討よろしくお願いいたします。


[ ]
RE:47367 追加希望:csvexport-v201No.47372
秀まるお2 さん 15/01/19 09:09
 
 From: To: Cc: Bcc:ヘッダの内容をメールアドレスのみに変換して出力するよ
うにマクロを直すのは、そんなに難しくないです。ってことで、とりあえず手元
のバージョンで、そういうのを対応してみました。

> また、各メールアドレス「,」区切りでなく、が1行毎に改行することができれば、
> 更に嬉しいです。

 改行区切りにすると、例えば「From:」と「To:」を出力する場合、現状だと、

  From,    To
  aaa,     bbb
  ccc,     ddd

 みたいになりますが、それの「,」を「改行」ってことだと、

  From
  To
  aaa
  bbb
  ccc
  ddd

 みたいに、どれがFromでどれがToだから全然分からなくなってしまいます。こ
んな形式では何の役にも立たないんじゃないかと思います。

 CSV形式じゃなくてTSV形式(タブ区切りテキストファイル)でってならありえ
る話だと思うので、とりあえずTSV形式対応だけ追加してみようかと思いますが、
もし何か他の形式でってご希望があるなら、どういう形式がいいのか、具体的な
サンプルとかも含めて教えて欲しいです。

[ ]
RE:47372 追加希望:csvexport-v201No.47386
秀まるお2 さん 15/01/20 09:57
 
 とりあえず、メールアドレスのみに変換できるのとTSV形式対応してV2.02とし
てアップロードしました。

    http://hide.maruo.co.jp/lib/tkmacro/csvexport-v202.html

[ ]
RE:47386 追加希望:csvexport-v201No.47395
のろやま さん 15/01/20 12:42
 
さっそくのご対応ありがとうございます。
非常にうれしい(^.^)

■背景
形式ですが、会社のメールから外部メールの誤送信防止に、
送信先のメールアドレスを、メールの最後に明示的に記載する必要があります。
形式は、--sepで区切ってそのあと登録したワードを、メールアドレスを一行ごとに
列記します。
その登録ワードをメールアドレスとして利用しており、1メールアドレスごとに改行
できると非常に便利です。

■例
--sep
aaa
bbb
ccc
ddd

なので、メールを1行ごとに改行して出力したいわけです。

さらにできれば、自分のドメイン以外の外部のみ抽出できたりすると
なおうれしかったりします。
@aaa.bbb.co.jp
だと
bbb.co.jpは、出力から除外など

ご検討よろしくお願いいたします。



[ ]
RE:47395 追加希望:csvexport-v201No.47397
秀まるお2 さん 15/01/20 14:39
 
 送信するメールでそういうことをするってことでしたら、csvexport.macより
も、別にマクロを作った方がいいかと思いました。

 マクロのサンプルはこんな風になりました。

-----------------------------------------------------------
    loaddll "tkinfo.dll";
    $to = dllfuncstr("CurrentHeaderUnited", "to");
    $cc = dllfuncstr("CurrentHeaderUnited", "cc");
    $bcc = dllfuncstr("CurrentHeaderUnited", "bcc");
    $to = $to + "," + $cc + "," + $bcc;
    $to = dllfuncstr("CallByEmailList", "SetEmailOnly", $to);
    #count = dllfunc("CountEmailList", $to);
    #i = 0;
    while( #i < #count ) {
        $email = dllfuncstr("GetEmailList", $to, #i);
        if( $email != "" ) {
            $result = $result + $email + "\n";
        }
        #i = #i + 1;
    }
    #x = x; #y = y;
    gofileend;
    insert "\n\n--sep\n" + $result;
    moveto #x, #y;
-----------------------------------------------------------

 これを、「マクロ・マクロ登録...」の「自動起動」ページの「あとで送信/今
すぐ送信時」に登録しておけば、送信時に勝手に「--sep」以下を書いてくれま
す。

[ ]
RE:47395 追加希望:csvexport-v201No.47398
秀まるお2 さん 15/01/20 14:48
 
> さらにできれば、自分のドメイン以外の外部のみ抽出できたりすると
> なおうれしかったりします。
> @aaa.bbb.co.jp
> だと
> bbb.co.jpは、出力から除外など

 仮に「.bbb.co.jp」を除去するとしたら、

            $result = $result + $email + "\n";

 の所を

            if( rightstr($email,10) == ".bbb.co.jp" ) {
                $email = leftstr($email, strlen($email) - 10);
            }
            $result = $result + $email + "\n";

 のように直せばいいです。

 ".bbb.co.jp"が変わる場合は、上記マクロの「10」の部分も変えないといけな
いです。(文字列の長さに合わせて)

[ ]
RE:47398 追加希望:csvexport-v201No.47406
のろやま さん 15/01/20 23:13
 
>> さらにできれば、自分のドメイン以外の外部のみ抽出できたりすると
>> なおうれしかったりします。
>> @aaa.bbb.co.jp
>> だと
>> bbb.co.jpは、出力から除外など
>
> 仮に「.bbb.co.jp」を除去するとしたら、

素晴らしい。
またまた、惚れ込みました。
マクロを勉強しなければ!
頑張ります(^^)

実は、「.bbb.co.jp」を除去するのではなく。
「.bbb.co.jp」を含んだメールアドレスは、内部なので記述しなくて良いので、削除
したかったりします。
簡単にできれば、伝授いただけると嬉しいです。
面倒であれば、そのまま内部+外部メール双方を記述しても、エラーにはならないの
でそのまま利用できます。

本当に助かりました。
さらに、ファンになりました。
今後とも宜しくお願い致します。

[ ]
RE:47406 追加希望:csvexport-v201No.47407
秀まるお2 さん 15/01/20 23:39
 
        if( $email != "" ) {
            $result = $result + $email + "\n";
        }

 の所を、例えば

        if( $email != ""
         && strstr($email, "@bbb.co.jp") < 0 ) {
            $result = $result + $email + "\n";
        }

 みたいにstrstrでヒットしなかったらって風にしたらいいんじゃないかと思い
ます。

 もっと正確にするには、

        $emailLow = dllfuncstr("ToLower", $email);
        if( $email != ""
         && rightstr($emailLow, 10) != "@bbb.co.jp" ) {
            $result = $result + $email + "\n";
        }

 とした方が正確かなぁと思います。(動作確認してませんが)

[ ]
RE:47407 追加希望:csvexport-v201No.47419
のろやま さん 15/01/22 00:14
 
出来ました!
ありがとうございます。
どちらも、バッチリです。
もっと便利に使えるようにマクロを勉強していきたいと思います。
今後とも宜しくお願い致します。


[ ]
RE:47419 追加希望:csvexport-v201No.47420
のろやま さん 15/01/22 14:56
 
もう一点教えていただけませんでしょうか。
現在、以下構文としています。
抽出したメールアドレスをすべて、小文字に変換して出力することは
可能なのでしょうか?
(to lower caseと同じ処理)

----
    loaddll "tkinfo.dll";
    $to = dllfuncstr("CurrentHeaderUnited", "to");
    $cc = dllfuncstr("CurrentHeaderUnited", "cc");
    $bcc = dllfuncstr("CurrentHeaderUnited", "bcc");
    $to = $to + "," + $cc + "," + $bcc;
    $to = dllfuncstr("CallByEmailList", "SetEmailOnly", $to);
    #count = dllfunc("CountEmailList", $to);
    #i = 0;
    while( #i < #count ) {
        $email = dllfuncstr("GetEmailList", $to, #i);
        $emailLow = dllfuncstr("ToLower", $email);
        if( $email != ""
  && rightstr($emailLow, 7) != "AAA.com"
         && rightstr($emailLow, 10) != "BBBB.co.jp"
         && rightstr($emailLow, 9) != "CCC.co.jp" ) {
            $result = $result + $email + "\n";
        }
      #i = #i + 1;
    }
    #x = x; #y = y;
    gofileend;
    insert "\n--sep@\n" + $result;
    moveto #x, #y;

[ ]
RE:47420 追加希望:csvexport-v201No.47421
秀まるお2 さん 15/01/22 15:39
 
 全部小文字に変換するなら、

    $to = dllfuncstr("CallByEmailList", "SetEmailOnly", $to);

 の後に(前でもいいけど)

    $to = dllfuncstr("ToLower", $to);

 を入れればいいです。

 あと細かいことを書くと、

      && rightstr($emailLow, 7) != "AAA.com"

 のような条件を書くと、例えば

    AAAAA.com

 のうなドメインもヒットしてしまうので、普通は

      && rightstr($emailLow, 8) != "@AAA.com"

 のように「@」入りで指定するか、それとも、

   xxx.AAA.com

 のような物もヒットさせたいなら、

      && rightstr($emailLow, 8) != "@AAA.com"
      && rightstr($emailLow, 8) != ".AAA.com"

 のようにした方が正確になると思います。

[ ]
RE:47421 追加希望:csvexport-v201No.47422
のろやま さん 15/01/22 16:52
 
ありがとうございます。
よく分かりました。
今後ともよろしくお願いいたします。

[ ]