エクスポートが完了したら、そのメールをNo.46556
すみこ さん 14/08/22 14:53
 
マクロで「ExportAll.mac」で受信したメールを一括でeml変換しエクスポートできる
のですが、その後、「エクスポートが完了したメールを削除する」を含めたマクロを
作成できる方おりませんでしょうか。

[ ]
RE:46556 エクスポートが完了したら、そのNo.46557
秀まるお2 さん 14/08/22 16:07
 
 ExportAll.macを見習って、アカウント配下のメールをすべて削除するって
マクロを作ってみました。

-------------DeleteAll.mac----------------------------------------------------
    loaddll "TKInfo.dll";
    if ( !result )  endmacro;
    if ( !dllfunc( "IsTuruKame" ) )  endmacro;
    question "現在選択してるアカウント配下のメールをすべて削除します。";
    if( result != yes ) endmacro;
    question "現在選択してるアカウント配下のメールをすべて削除します。\n\n" +
             "最終確認のため、続行する場合は「いいえ」を押してください。";
    if( result != no ) endmacro;

    #n = dllfunc( "SelectFolder", "", "" );
    $currentAccount = dllfuncstr( "CurrentAccount" );
    while (1) {
        #n = dllfunc( "ExpandFolder", 1 );
        #n = dllfunc("NextFolder");
        if (#n == 0) {
            message "削除終了。";
            endmacro;  
        }
        $account = dllfuncstr( "CurrentAccount" );  
        if ($account != $currentAccount) {
            message "削除終了。";
            endmacro;  
        }
        $folder = dllfuncstr( "CurrentFolder" );
        if ($folder == "未送信" || $folder == "草稿")  continue;
        #n = dllfunc("SetViewArea", 0);
        #n = dllfunc("SelectAllMail");
        #n = dllfunc("Delete", 1);
    }
------------------------------------------------------------------------------

 こんなマクロでどうでしょうか。

 ExportAll.macと合体させるとしたら、たとえばExportAll.macの中に

        message "エクスポート終了。";
        endmacro;  

 と書いてある所が2箇所あるのですが、たとえばそこを、

        question "エクスポート終了。続けてメールを削除しますか?";
        if( result == yes ) {
            execmacro "DeleteAll.mac";
        }
        endmacro;

 みたいにしたら、マクロ終了につつけてDeleteAll.macが実行されると思いま
す。そんな感じでどうでしょうか。

 間違って大事なメールが全部消えたってことにならないように注意が必要かと
は思います。

[ ]
RE:46557 エクスポートが完了したら、そのNo.46558
秀まるお2 さん 14/08/22 16:31
 
 すみません。このマクロだと、ExportAll.macの後に実行したら、ExportAllし
たアカウントじゃなくて、その下にあるとなりのアカウントのメールをすべて削
除してしまいます。

 なのでまずいです。

 使わないでください。

 今ちょっと、ExportAll.macを書き換えて作ってみます。

[ ]
RE:46558 エクスポートが完了したら、そのNo.46559
秀まるお2 さん 14/08/22 17:08
 
 何度もすみません。

 ExportAll.macとは別に、DeleteAll.macってマクロを作ってそれで削除するな
ら、先ほどのマクロそのままで大丈夫なはずです。

 そうじゃなくて、ExportAll.macを改造するとしたら、以下のようにして欲し
いです。


■1

        message "エクスポート終了。";
        endmacro;  

 のような箇所が2箇所あるので、そこを、

        question "エクスポート終了。続けてメールを削除しますか?";
        if( result == yes ) {
            goto DeleteAll
        }
        endmacro;

 のように直す。

■2

 マクロの一番最後に以下の内容を追加する。

DeleteAll:
    #n = dllfunc("SelectFolder", $currentAccount, "" );
    if( #n == 0 ) endmacro;
    question "現在選択してるアカウント配下のメールをすべて削除します。";
    if( result != yes ) endmacro;
    question "現在選択してるアカウント配下のメールをすべて削除します。\n\n" +
             "最終確認のため、続行する場合は「いいえ」を押してください。";
    if( result != no ) endmacro;

    while (1) {
        #n = dllfunc( "ExpandFolder", 1 );
        #n = dllfunc("NextFolder");
        if (#n == 0) {
            break;
        }
        $account = dllfuncstr( "CurrentAccount" );  
        if ($account != $currentAccount) {
            break;
        }
        $folder = dllfuncstr( "CurrentFolder" );
        if ($folder == "未送信" || $folder == "草稿")  continue;
        #n = dllfunc("SetViewArea", 0);
        #n = dllfunc("SelectAllMail");
        #n = dllfunc("Delete", 1);
    }
    #n = dllfunc( "SelectFolder", $currentAccount, "" );
    message "削除終了。";
    endmacro;  


 ExportAll.macを改造する場合は、このような修正でないとダメかと思います。

 テストする時は、間違って大事なメールを削除してしまわないように、一度バ
ックアップしてから実行することをお勧めします。大変危ないマクロですので。

[ ]
RE:46559 エクスポートが完了したら、そのNo.46560
すみこ さん 14/08/22 18:50
 
アドバイスありがとうございます!

削除のところですが、削除するかどうか聞かずにそのまま削除の流れにしたいのです
が、方法はありますでしょうか。

マクロを流したあと
「削除しますか」のあと
「goto/callで飛び先が見つかりません。飛び先:DeleteALL」とエラーが発生しまし
た。
原因はわかりますでしょうか??

[ ]
RE:46560 エクスポートが完了したら、そのNo.46561
すみこ さん 14/08/22 18:55
 
何度もすみません。

最後のマクロを張り付けていなかったので、飛び先のエラーが出たんですね。
こちらは解決しました。

やはり、エクスポート後、即削除(問合せなしで)のマクロを作成できますでしょう
か。。

[ ]
RE:46561 エクスポートが完了したら、そのNo.46562
秀まるお2 さん 14/08/23 00:31
 
 確認メッセージを出す処理を取ってしまえばいいかと思います。

    question "現在選択してるアカウント配下のメールをすべて削除します。";
    if( result != yes ) endmacro;
    question "現在選択してるアカウント配下のメールをすべて削除します。\n\n" +
             "最終確認のため、続行する場合は「いいえ」を押してください。";
    if( result != no ) endmacro;

 の5行を除去するのと、あと、


        question "エクスポート終了。続けてメールを削除しますか?";
        if( result == yes ) {
            goto DeleteAll
        }
        endmacro;

 と直すって所を、

        goto DeleteAll

 だけにしてしまえば、問い合わせメッセージ無しでいきなり削除します。

 いきなりなんの忠告も無しに削除してしまうので、怖いですけど。自己責任で
お願いします。

[ ]
RE:46562 エクスポートが完了したら、そのNo.46565
すみこ さん 14/08/25 11:27
 
非常に助かりました!
想定していた動作になり感動です!!
ありがとうございました。

[ ]