特定のフォルダのメールの添付ファイルの削除No.07634
けんいち さん 02/06/11 17:48
 
 みなさん、こんにちは。
 けんいちです。

 hidesoft.8:07128において、特定のフォルダのメールの添付ファイルを一括保
存するマクロが公開されていましたが、逆に添付ファイルを一括削除するような
マクロは存在しませんでしょうか?

 添付ファイル自体は、ローカル保存してあったり、MLサーバ上に蓄積されてい
たりしており、一定期間経過後は鶴亀メールで蓄えられている添付ファイルを削
除し、ディスクの使用量を減らしたいと思っています。

 3ペインで1通ずつ表示し、削除操作を行うには、非常に手間がかかるので、フ
ォルダを指定し、一括削除できないかと思うしだいです。

 サブフォルダまで再帰的に削除されなくてもよいのですが、そのようなマクロ
は公開されていませんでしょうか?

 よろしくお願いします。

[ ]
RE:07634 特定のフォルダのメールの添付ファイルの削除No.07635
ひろ さん 02/06/11 20:04
 
 けんいちさん今日は、ひろです。
> 逆に添付ファイルを一括削除するような
> マクロは存在しませんでしょうか?
 存在はしていませんが、作ることは出来ます。具体的には、
http://www.maruo.co.jp/hidesoft/8/m020517.html#7128
の xcopy を deltree にしてやればよいです。しかし
> 一定期間経過後
の計算が結構面倒です。まあ Date ヘッダから一定期間後なら出来ますが、
Date ヘッダは結構狂っているんですよね(^^;。また送受信日時は算は、マク
ロで取得できないと思います。

 ただ
http://www.maruo.co.jp/turukame/2/m020608.html#5415
のスレッドとは逆に、未読、マーク等各種条件に当てはまる場合は削除しな
い、という条件なら簡単です。

 というわけで、この辺りのご希望の仕様を改めてご連絡ください。

[ ]
RE:07635 特定のフォルダのメールの添付ファイルの削除No.07636
けんいち さん 02/06/11 21:11
 
 ひろさん、こんにちは。
 けんいちです。
 早速のリプライありがとうございます。

 お言葉に甘えまして、希望する仕様を挙げてみたいと思います。

》> 一定期間経過後
》の計算が結構面倒です。まあ Date ヘッダから一定期間後なら出来ますが、
》Date ヘッダは結構狂っているんですよね(^^;。また送受信日時は算は、マク
》ロで取得できないと思います。

 これについては、一定期間の経過はマクロで判断していただくことまでは考え
ておらず、マクロ実行時に後に書きます条件を満たしいれば、すべて削除されて
かまいません。


 それでは、希望する仕様を書いてみます。
 (欲張って汎用的な仕様も書いてみますが、無視していただいても結構です。)

・削除対象フォルダ
   指定したフォルダのみでよい。
     サブフォルダも再帰的に処理できるよう指定可能であると、汎用的
    でよいかも。

・削除対象対象メール
   上記で指定したフォルダの、下記条件以外のもの
    未読
    マークつき
    色つき
     上記に優先度高を加え、対象を選択できれば、汎用的でよいかも。

・誤削除防止
   削除処理を行うため、マクロ実行前に本当に添付ファイルの削除処理を
   開始してよいか確認後、実際の処理を行ってほしい。

 あと、こちらから質問なのですが、マクロ実行時の条件のようなものはありま
すでしょうか?あるようでしたら、教えていただけませんか?
 たとえば、3ペインで表示していないといけないとか、メール一覧は"一覧表示
”になっていないといけないといったようなこですが。。。

 自分では、いろいろ条件を想像してはみたのですが、仕様面で考えておくべき
ポイントが抜けているかもしれません。何かあればご指摘いただけると幸いです。

[ ]
RE:07636 特定のフォルダのメールの添付ファイルの削除No.07639
ひろ さん 02/06/12 00:19
 
 けんいちさん今日は、ひろです。
> ・削除対象フォルダ
 こちらについてですが、現在選択されているフォルダをの添付ファイルを
削除するのではなく、先に削除対象フォルダを指定しておくのでしょうか?
この仕様だと、フォルダを増やすたびに設定しなければならなくなり、使い
勝手はよくない気がします。
> ・誤削除防止
 添付ファイルを削除するたびに問い合わせがあると、結局マクロを使わず
に手動でやるのと殆ど手間は変わらないと思います。それでも必要ですか?

 この様な理由から、上記の 2 点については、個人的には現在選択している
のを削除対象とし、本当に現在選択しているフォルダで削除するかの確認が
出だすのが妥当だと思いますがいかがでしょう? またこの確認時に、[OK] を
選択しても、
>     未読
>     マークつき
>     色つき
これに該当するメールが一通もなければ、全てメールが削除対象になり危険
なので、もう一度確認を出すのが良いですか? あと確認ですが、ここでの削
除は、「ごみ箱」ではなく完全削除ですが、問題ないですよね。

[ ]
RE:07639 特定のフォルダのメールの添付ファイルの削除No.07640
けんいち さん 02/06/12 09:13
 
 ひろさん、こんにちは。
 けんいちです。

》> ・削除対象フォルダ
》 こちらについてですが、現在選択されているフォルダをの添付ファイルを
》削除するのではなく、先に削除対象フォルダを指定しておくのでしょうか?
》この仕様だと、フォルダを増やすたびに設定しなければならなくなり、使い
》勝手はよくない気がします。

 私も、ひろさんがおっしゃるように、現在選択されているフォルダに対して処
理を行うことを想定していました。
 マクロを実行しようとしたときに、過去に指定しておいたすべてのフォルダが
対象になると、意図しないフォルダ配下まで削除されることにもなりかねず、現
在選択されているフォルダ(またはその配下のサブフォルダ)だけが削除対象とな
るのがよいと思っています。

》> ・誤削除防止
》 添付ファイルを削除するたびに問い合わせがあると、結局マクロを使わず
》に手動でやるのと殆ど手間は変わらないと思います。それでも必要ですか?

 そうですね。これも私の意識の中では、ひろさん同様、メール単位ではなく、
マクロ起動時に確認されることを想定していました。

》またこの確認時に、[OK] を
》選択しても、
》>     未読
》>     マークつき
》>     色つき
》これに該当するメールが一通もなければ、全てメールが削除対象になり危険
》なので、もう一度確認を出すのが良いですか? あと確認ですが、ここでの削
》除は、「ごみ箱」ではなく完全削除ですが、問題ないですよね。

 完全削除で問題ないです。ただ、削除という操作であるため、未読等がなくす
べてが削除対象となるが問題ないかというようなもう1段の確認メッセージがあ
っても私はよいと思っています。
 使用者の責任でマクロは実行しますが、削除という操作になるので、2段階の
確認メッセージが出てくれたほうが、うっかり削除してしまい、取り返しがつか
なくなったという確率が下げられるというのが私の考えです。

 ですが、ここら辺は使う人の考え方もあると思いますので、マクロファイル中
の変数等で2段目のメッセージを出すかどうか設定できるとよいのかなとは思い
ます。(2段目のメッセージを出さなければ、未読等があるか確認するためにフォ
ルダ配下のメールを確認するフェーズが必要がなく、マクロ起動から処理完了ま
での時間はだいぶ(?)短縮されることになるのですよね?)

 お手数をおかけしますが、よろしくお願いします。

[ ]
RE:07640 特定のフォルダのメールの添付ファイルの削除No.07655
ひろ さん 02/06/12 23:42
 
 けんいちさん今日は、ひろです。
>  ですが、ここら辺は使う人の考え方もあると思いますので、マクロファイル中
> の変数等で2段目のメッセージを出すかどうか設定できるとよいのかなとは思い
> ます。
 それでは取り敢えずマクロをアップしますが、必ずバックアップを取って
から使ってください。また別件でこの添付ファイルを保存しているフォルダ
の命名方法に不備が見つかっています。詳細は、
http://www.maruo.co.jp/turukame/1/m020608.html#7449
のスレッドを見て頂き、この点に注意していただかないと、思わぬ添付ファ
イルが削除されれかねませんので、注意してください。
//---------------- delete attachment file ---------------------------
loaddll "tkinfo.dll";
if( dllfunc("IsThreadView") ) {
  message "スレッド表示だと実行できません。";
  goto End;
}
#viewarea = dllfunc("ViewArea");
if( #viewarea != 5 ) {
  #n = dllfunc("SetViewArea", 5);
}
#total = dllfunc("MailCount");
if( #total == 0 ) {
  message "添付ファイル付きメールが1つもありません。";
  #n = dllfunc("SetViewArea", #viewarea );
  goto End;
}
#tmp = dllfunc( "SetFindPack","flag=unread|mark|color, inmail=0" );
if( !dllfunc( "FindDownInclude" ) ){
  if( !dllfunc( "FindUpInclude" ) ){
    question "未読、マーク、色付きメールがありません。\nマクロを終了しますか?";
    if( result )goto End;
  }
}
#i = 0;
while( #i < #total ) {
  #n = dllfunc("SetMailIndex", #i );
  #i = #i + 1;
  if( dllfunc( "GetMailFlag","unread") | dllfunc( "GetMailFlag","mark") |
    dllfunc( "GetMailColor" ) )continue;
  #x = 0;
  $attach = dllfuncstr("CurrentHeader", "X-Attach");
  if( $attach != "" ) {
    $src = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount")
       + "\\" + $attach;
    // フォルダ名のみに変換する。
    #xFolder = -1;
    #xFile = -1;
    while(1) {
      #x = strstr( midstr( $src, #xFile + 1, 256 ), "\\" );
      if( #x < 0 ) {
        break;
      }
      #x = #x + #xFile + 1;
      #xFolder = #xFile;
      #xFile = #x;
    }
    $src = leftstr( $src, #xFile );
    if( existfile( $src ) )runsync2 "deltree.exe  /Y \"" + $src + "\"";
  }
}
#n = dllfunc("SetViewArea", #viewarea );

End:
  freedll;
  endmacro;

[ ]