マクロを教えてください、メール本文を加No.42079
マハロ さん 12/01/29 16:38
 
-----元のメッセージ-----
差出人: ***@*******.** [mailto:***@*******.**]
送信日時: 2012年1月29日 15:10
宛先: *******@*******.***
件名: ミーティングが始まりました

**********************
ウィルコムミーティング
開始のお知らせ
**********************
事前に招待メールをお送りした「A/15:00(*******@*******.***)」さん主催のウィ
ルコムミーティングが開始されています。
参加される場合は、今すぐ以下のアクセス番号をクリックしてください。

★アクセス番号:
TEL:************

<ミーティング内容>
●「A/15:00」さんからのメッセージ:

●招待日時:
2012年01月29日15時00分
※利用期限は3時間以内です。

このメールは、ミーティング参加中のお客様のご希望により全招待者宛に送信されま
した。
※このアドレスには返信できません。

==初めてご利用になる方へ==
●下記URLから「ミーティングに招待されたら」を必ずご確認ください。
http://www.*******.**/******.asp
※上記にアクセスできない場合は、ウィルコムホームページにてサービス概要をご確
認ください。

●ウィルコムミーティングの参加には、ご利用の料金プラン別に以下の料金がかかり
ます。
◇「各種定額プラン」「つなぎ放題+話し放題」の場合
⇒通話料無料+利用料10.5円/1分(上限1,050円/月まで)※通話料はウィルコムへの
通話と同様、連続2時間45分以上は有料
◇上記以外の料金プランの場合
⇒通話料10.5円/1分+利用料10.5円/1分(上限1,050円/月まで)
**********************
株式会社ウィルコム


上記のメールを転送するときに、

★アクセス番号:
TEL:************

<ミーティング内容>
●「A/15:00」さんからのメッセージ:

●招待日時:
2012年01月29日15時00分
※利用期限は3時間以内です。

の部分だけを切り取って転送したいのです。
いろいろ検索して似たようなのを2つほど見つけたのですが、さっぱり理解できませ
んでした。
よろしくお願い致します。

[ ]
RE:42079 マクロを教えてください、メールNo.42085
秀まるお2 さん 12/01/30 09:43
 
 やり方はいろいろあると思いますが、「転送メール」を実行した後に実行する
用のマクロということでしたら、例えば、

    searchdown "★アクセス番号:";
    if( result ) {
        beginsel;
        gofiletop;
        delete;
        searchdown "※利用期限は3時間以内です。";
        if( result ) {
            golinetop2;
            down;
            beginsel;
            gofileend;
            delete;
        }
    }

 のマクロを実行すれば、「アクセス番号〜利用期間は」を除いた部分はすべて
削除されます。

[ ]
RE:42085 マクロを教えてください、メールNo.42087
マハロ さん 12/01/30 10:44
 
ありがとうございます。
出先のパソコンからチェックしてるので、戻ったらさっそく試して結果を報告します。
これからもよろしくお願いいたします。

[ ]
RE:42087 マクロを教えてください、メールNo.42100
マハロ さん 12/01/31 15:07
 
マクロの動作確認できました。ありがとうございます。
受信したメールを開いて、編集を許可して、マクロを実行して、転送するという動作
を手動で行う事が出来ました。

これを、定期的に受信して、自動で転送までするには、どのように設定したら良いの
でしょうか?
マクロにも追記が必要になるのでしょうか?

[ ]
RE:42100 マクロを教えてください、メールNo.42102
マハロ さん 12/01/31 16:48
 
過去ログを読み返してやりたいことが実現できました。
ありがとうございます。明日、入金します。

マクロは以前のログから真似て以下のようにしました。
意味は理解できていませんが。。。

    $targetacc = "***@*.*.*";

    loaddll "tkinfo.dll";
    #count = dllfunc("GetFolderMailCount", $targetacc, "未送信");
    if( #count == 0 ) {
        endmacro;
    }
    $account = dllfuncstr("CurrentAccount");
    $folder = dllfuncstr("CurrentFolder");

    #n = dllfunc("SelectFolder", $targetacc, "未送信");
    if( dllfunc("IsThreadView") ) {
        #n = dllfunc("SetThreadView", 0);
    }
    #i = 0;
    while( #i < #count ) {
        #n = dllfunc("SetMailIndex", #i);
        if( dllfuncstr("CurrentHeader", "Resent-From:") != "" ) {
            //そのまま転送 のメールの場合のみ
            #browsemode = browsemode;
            #readonly = readonly;
            if( browsemode ) browsemodeswitch;
            if( readonly ) readonlyswitch;
            #n = dllfunc("BeginEditMail");

    searchdown "クリックしてください。";
    if( result ) {
        beginsel;
        gofiletop;
        delete;
        searchdown "==初めてご利用になる方へ==";
        if( result ) {
            golinetop2;
            down;
            beginsel;
            gofileend;
            delete;
        }
    }

            if( updated ) {
                #n = dllfunc("SaveEditMail", 0, 1);
            } else {
                #n = dllfunc("CancelEditMail");
            }
            if( browsemode ) browsemodeswitch;
            if( readonly ) readonlyswitch;
        }
        #i = #i + 1;
    }
    #n = dllfunc("SelectFolder", $account, $folder);

[ ]
RE:42102 マクロを教えてください、メールNo.42103
秀まるお2 さん 12/01/31 17:18
 
 秀丸メールご購入ありがとうございます。

 受信したメールを改変する形のマクロを作るとなるとちょっと大変なんですが、
「そのまま転送」で未送信フォルダに保存したメールを改変する作戦でしたら、
そのマクロでいけるということで…。

 それはいい作戦だと思います。

[ ]
RE:42103 マクロを教えてください、メールNo.42125
マハロ さん 12/02/01 18:03
 
このマクロが理解できるようになるお勧めの解説書は何がいいでしょうか?

[ ]
RE:42125 マクロを教えてください、メールNo.42129
秀まるお2 さん 12/02/02 00:10
 
 秀丸マクロについては、うちのホームページに掲載している「書籍紹介」の所
を参考にして欲しい所ではあります。

http://hide.maruo.co.jp/book/books1.html

 さらに秀丸メール用のマクロをってことになると、実は適当な本は無くて、
ヘルプを見ていただくしかありませんが…。

 ここの会議室にあるマクロとか、あとはうちのライブラリにアップロードされ
てるマクロの中身を見て参考にしていただく作戦くらいしか無いかなぁと思いま
す。

秀丸メールのマクロライブラリ:
    http://hide.maruo.co.jp/lib/tkmacro/index.html

 何かこういうことをするマクロの例をって感じでご要望いただければ、ある程
度、こんな作戦でやればいいみたいな感じのお返事は出来ます。

[ ]
RE:42129 マクロを教えてください、メールNo.42145
マハロ さん 12/02/03 08:46
 
また、マクロを教えてください。
前回教えて頂いて、1つの共通マクロで、2種類のメールを下記のような@パターン
とAパターンまで短縮できました。もっと短縮したいです。

結局のところ残したいのは、2行だけです。

@パターンの場合は、
TEL:125182915312
「A/06:00」さんから

Aパターンの場合は、
「A/06:00」さんから
TEL:125182915312

を残したい。順番は問いません。
変動するのは、
Aのところは、BになったりCになったりDになったりします。
06:00ところは、00:00・03:00・・・21:00になります。
TEL:125までは固定で、残りの9ケタが変化します。

よろしくお願いします。

+++++@パターン+++++

番号をクリックしてください。

★アクセス番号:
TEL:125182915312

<ミーティング内容>
●「A/06:00」さんからのメッセージ:

●招待日時:
2012年02月03日06時02分
※利用期限は3時間以内です。

このメールは、ミーティング参加中のお客様のご希望により全招待者宛に送信されま
した。
※このアドレスには返信できません。

==初めてご利用になる方へ==



+++++Aパターン+++++

番号をクリックしてください。

●「A/06:00」さんからのメッセージ:

●招待日時:
2012年02月03日06時02分
※利用期限は3時間以内です。

●アクセス番号:
TEL:125182915312

==初めてご利用になる方へ==

[ ]
RE:42145 マクロを教えてください、メールNo.42151
秀まるお2 さん 12/02/03 11:28
 
    replaceallfast "^(?!(TEL:[0-9]+|「.+?」さんから)$).+\n", ""
                 , regular, nocasesense;
    replaceallfast "^\n", "", regular, nocasesense;

 ように全置換を2回実行する形にすれば、余計な行は全部削除出来ます。その
作戦がお勧めです。


    searchdown "クリックしてください。";
    if( result ) {
        beginsel;
        gofiletop;
        delete;
        searchdown "==初めてご利用になる方へ==";
        if( result ) {
            golinetop2;
            down;
            beginsel;
            gofileend;
            delete;
        }
    }


 とやってた部分を上記のreplaceallfast文2つだけにすればいいと思います。

[ ]
RE:42151 マクロを教えてください、メールNo.42152
マハロ さん 12/02/03 12:20
 
テストしてみたところ、電話番号だけになってしまいました。
きちんとコピペしたのですが。。。

[ ]
RE:42152 マクロを教えてください、メールNo.42155
秀まるお2 さん 12/02/03 13:18
 
 1つ間違えました。「\n」の所は「\\n」と書かないとダメでした。

 それと、ちょっと状況が理解出来てないですけども、よくよく見直したら、

●「A/06:00」さんからのメッセージ:

 って内容を残したいって話だったのですかね。

 総合すると、1行目を

    replaceallfast "^(?!(TEL:[0-9]+|.*?「.+?」さんから)).+\\n", ""
                 , regular, nocasesense;

 にすればいいと思います。

[ ]
RE:42155 マクロを教えてください、メールNo.42159
マハロ さん 12/02/03 15:12
 
    $targetacc = "*@*";

    loaddll "tkinfo.dll";
    #count = dllfunc("GetFolderMailCount", $targetacc, "未送信");
    if( #count == 0 ) {
        endmacro;
    }
    $account = dllfuncstr("CurrentAccount");
    $folder = dllfuncstr("CurrentFolder");

    #n = dllfunc("SelectFolder", $targetacc, "未送信");
    if( dllfunc("IsThreadView") ) {
        #n = dllfunc("SetThreadView", 0);
    }
    #i = 0;
    while( #i < #count ) {
        #n = dllfunc("SetMailIndex", #i);
        if( dllfuncstr("CurrentHeader", "Resent-From:") != "" ) {
            //そのまま転送 のメールの場合のみ
            #browsemode = browsemode;
            #readonly = readonly;
            if( browsemode ) browsemodeswitch;
            if( readonly ) readonlyswitch;
            #n = dllfunc("BeginEditMail");

    replaceallfast "^(?!(TEL:[0-9]+|.*?「.+?」さんから)).+\\n", "", regular,
 nocasesense;
    replaceallfast "^\n", "", regular, nocasesense;

            if( updated ) {
                #n = dllfunc("SaveEditMail", 0, 1);
            } else {
                #n = dllfunc("CancelEditMail");
            }
            if( browsemode ) browsemodeswitch;
            if( readonly ) readonlyswitch;
        }
        #i = #i + 1;
    }
    #n = dllfunc("SelectFolder", $account, $folder);

[ ]
RE:42159 マクロを教えてください、メールNo.42160
マハロ さん 12/02/03 15:22
 
マクロはきちんと書き換えたと思うのですが、全然削除されず、そのまま転送される
だけでした。
マクロ登録→自動起動→受信が一段落したときに登録してあります。
他に気にする場所はあるのでしょうか?

[ ]
RE:42160 マクロを教えてください、メールNo.42161
マハロ さん 12/02/03 15:33
 
>マクロはきちんと書き換えたと思うのですが、全然削除されず、そのまま転送され
>るだけでした。
>マクロ登録→自動起動→受信が一段落したときに登録してあります。
>他に気にする場所はあるのでしょうか?

あの2行を手動で操作したときは、きちんと削除されました。
自動転送だけうまくいきません。

[ ]
RE:42161 マクロを教えてください、メールNo.42162
秀まるお2 さん 12/02/03 17:26
 
            #n = dllfunc("BeginEditMail");

 の直後に

    message "メールを書き換えます。";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    message "メール書き換えされました。";

 とかやってみたらどうでしょ?。それでメールの書き換えがされるかどうか見
てみるとか。

 メールが書き換えされるならば、さらにその後ろに

  replaceallfast "●", "★";

 とか入れてみて、たしかに●が★に書き変わるかどうか試してみるとか。

 それでうまくいくとしたら、あとはreplacealfast文の中身の問題ってことに
なりますけども。

[ ]
RE:42161 マクロを教えてください、メールNo.42163
秀まるお2 さん 12/02/03 17:32
 
 replaceallfast文の後にも一回message文を入れて、たしかにメールが書き換
わってるかどうか確認するといいかも、と思います。

[ ]
RE:42162 マクロを教えてください、メールNo.42165
マハロ さん 12/02/03 19:09
 
>            #n = dllfunc("BeginEditMail");
>
> の直後に
>
>    message "メールを書き換えます。";
>    insert "●●●●●●●●●●●●●●●●●●●●\n";
>    insert "●●●●●●●●●●●●●●●●●●●●\n";
>    insert "●●●●●●●●●●●●●●●●●●●●\n";
>    insert "●●●●●●●●●●●●●●●●●●●●\n";
>    insert "●●●●●●●●●●●●●●●●●●●●\n";
>    message "メール書き換えされました。";
>
> とかやってみたらどうでしょ?。

テストしました。まったく変化なしでした。
転送だけして、マクロが動いてないのかも。。。
どこが問題なのでしょうか?

[ ]
RE:42165 マクロを教えてください、メールNo.42166
マハロ さん 12/02/03 19:44
 
動作のログをメールで送りました。
解決したいのでよろしくお願い致します。

[ ]
RE:42166 マクロを教えてください、メールNo.42167
秀まるお2 さん 12/02/03 22:28
 
 送っていただいたログによると、

   GetFolderMailCount

 関数呼び出しがなされて、それが0でreturnして、その後すぐにマクロ終了し
てる記録しかありませんでした。

 BeginEditMailが呼び出されてる雰囲気はまったくありません。

 もう一度冷静にマクロの先頭からトレースしてみてはどうでしょうか。

 1行毎に、message文を入れてみるとか。

    loaddll "tkinfo.dll";
    #count = dllfunc("GetFolderMailCount", $targetacc, "未送信");
    if( #count == 0 ) {
        message "GetFolderMailCount関数の返り値が0でした。マクロ終了します。";
        endmacro;
    }
    $account = dllfuncstr("CurrentAccount");
    message "$account = " + $account;
    $folder = dllfuncstr("CurrentFolder");
    message "$folder = " + $folder;

 みたいな感じで1行ずつちゃんと期待した動作になってるかどうか確認してい
くのがいいと思います。

[ ]
RE:42167 マクロを教えてください、メールNo.42168
マハロ さん 12/02/03 23:16
 
いきなりメッセージが出ました。
"GetFolderMailCount関数の返り値が0でした。マクロ終了します。"

どうすればいいのでしょうか?

[ ]
RE:42168 マクロを教えてください、メールNo.42169
マハロ さん 12/02/04 00:09
 
"GetFolderMailCount関数の返り値が0でした。マクロ終了します。"
以外のメッセージは出ませんでした。

    $targetacc = "*@*";

    loaddll "tkinfo.dll";
    #count = dllfunc("GetFolderMailCount", $targetacc, "未送信");
    if( #count == 0 ) {
message "GetFolderMailCount関数の返り値が0でした。マクロ終了します。";
        endmacro;
    }
    $account = dllfuncstr("CurrentAccount");
message "$account = " + $account;
    $folder = dllfuncstr("CurrentFolder");
message "$folder = " + $folder;
    #n = dllfunc("SelectFolder", $targetacc, "未送信");
message "#n = " + #n;
    if( dllfunc("IsThreadView") ) {
message "dllfunc(IsThreadView)";
        #n = dllfunc("SetThreadView", 0);
    }
    #i = 0;
message "#i = 0";
    while( #i < #count ) {
message "while( #i < #count )";
        #n = dllfunc("SetMailIndex", #i);
message "#n = " + #n;
        if( dllfuncstr("CurrentHeader", "Resent-From:") != "" ) {
message "if( dllfuncstr(CurrentHeader, Resent-From:) !=  )";
            //そのまま転送 のメールの場合のみ
message "//そのまま転送 のメールの場合のみ";
            #browsemode = browsemode;
message "#browsemode = " + #browsemode;
            #readonly = readonly;
message "#readonly = " + #readonly;
            if( browsemode ) browsemodeswitch;
message "if( browsemode ) browsemodeswitch";
            if( readonly ) readonlyswitch;
message "if( readonly ) readonlyswitch";
            #n = dllfunc("BeginEditMail");
message "#n = " + #n;

    message "メールを書き換えます。";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    insert "●●●●●●●●●●●●●●●●●●●●\n";
    message "メール書き換えされました。";

    replaceallfast "^(?!(TEL:[0-9]+|.*?「.+?」さんから)).+\\n", "", regular,
 nocasesense;
    replaceallfast "^\n", "", regular, nocasesense;

            if( updated ) {
                #n = dllfunc("SaveEditMail", 0, 1);
            } else {
                #n = dllfunc("CancelEditMail");
            }
            if( browsemode ) browsemodeswitch;
            if( readonly ) readonlyswitch;
        }
        #i = #i + 1;
    }
    #n = dllfunc("SelectFolder", $account, $folder);

[ ]
RE:42169 マクロを教えてください、メールNo.42170
マハロ さん 12/02/04 09:07
 
出来ました。
各種、上級者設定を全部いったんリセットして保存した後、上級者向け・送信エン
コード・そのまま受信受信ログを・・・のチェックを外すでOKでした。
どこの上級者設定が邪魔していたのかわからなかったし、いじった覚えもないのです
が、解決できてよかったです。
たいへん、ありがとうございました!!

[ ]