各人ごとの一ヶ月間の投稿回数リストNo.26951
nari さん 06/03/31 11:52
 
 メーリングリストにおいて、一ヶ月間の全ての投稿者のアドレスとそのアドレスか
らの投稿回数をリストにする。

 こういったことを実現するマクロはありますでしょうか。

 そのものズバリが存在しなくても、いくつかの作業を組み合わせるとできると思う
のですが、マクロ作成になれていないので、方向性のヒントをいただければ幸いです。

 できれば、このマクロでリストを作成してエクセルなりで処理すれば、といった感
じだと助かります。

[ ]
RE:26951 各人ごとの一ヶ月間の投稿回数リNo.26962
秀まるお2 さん 06/03/31 18:24
 
 やり方はいろいろあると思いますが、1つ僕の考えたアイデアとしてですが…。

 from:ヘッダ中のメールアドレスからファイル名を生成してやります。そして、
そのファイルを開いて1文字追加して保存って処理を繰り返します。

 具体的には、

 #n = dllfunc("NewMail");
 #editor = hidemaruhandle(0);
 #n = dllfunc("SwitchHeaderView",0);
  #n = dllfunc("SetMainWndTop");

 みたいな処理でまずはエディタ(#editor)を起動しておきます。そして、
LockSelection/EnumSelectionでループを作って、そこで、

 $file = dllfuncstr("CurrentHeader","From");
 $file = dllfuncstr("SetEmailOnly",$file);
 $file = "c:\\temp\\" + $file;

 setactivehidemaru #editor;
 insertfile $file;
 gofileend;
 insert "a";
 saveas $file;
 gofiletop;
 beginsel;
 gofileend;
 delete;
 #n = dllfunc("SetMainWndTop");

 みたいな処理をして、そのファイルに1バイト追加書き込みします。

 そうやって、後はdirコマンドを使うなどしてファイル名とファイルサイズの
一覧を表示させれば、それなりに適当な表が完成するんじゃないかと思います。

[ ]
RE:26962 各人ごとの一ヶ月間の投稿回数リNo.26966
nari さん 06/03/31 21:22
 
 すいません、秀丸マクロに関しては手元に参考書籍があるのですが(作ったこと無
いのですけれど・・)秀丸メールに関しては手がかりが皆無なので、なんとか手探り
でやってみました。

 ヘルプから「例(特定メールを削除する例)」というのを探して、教えていただい
たソースを書き込んで以下のようにしてみました。

 下のマクロだとC:\temp中に投稿者のメールアドレスをファイル名とするファイル
が、アドレスの重複無く作成されます。

 複数回投稿している人の場合、ファイルの中味は最後の投稿者のメールの内容にな
っています。

 これに何を足せば「個々人が期間中何回投稿したか」を把握できるようになります
でしょうか?
--------------------------------------------
loaddll "tkinfo.dll";
#count = dllfunc("SelectedMailCount");
if( #count == 0 ) {
 endmacro;
}
#n = dllfunc("LockSelection");
while(1)

{
#n = dllfunc("EnumSelection", 1);
 if( #n == 0 )
{
  break;
}

$file = dllfuncstr("CurrentHeader","From");
$file = dllfuncstr("SetEmailOnly",$file);
$file = "c:\\temp\\" + $file;

setactivehidemaru #editor;
insertfile $file;
gofileend;
insert "a";
saveas $file;
gofiletop;
beginsel;
gofileend;
delete;
}
#n = dllfunc("SetMainWndTop");

[ ]
RE:26966 各人ごとの一ヶ月間の投稿回数リNo.26968
Iranoan さん 06/04/01 00:17
 
 nari さん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
>  複数回投稿している人の場合、ファイルの中味は最後の投稿者のメールの内容にな
> っています。
 作成されたマクロだと、投稿回数分だけ a が書き込まれていませんか?

>  これに何を足せば「個々人が期間中何回投稿したか」を把握できるようになります
> でしょうか?
については、
>  そうやって、後はdirコマンドを使うなどしてファイル名とファイルサイズの
> 一覧を表示させれば、それなりに適当な表が完成するんじゃないかと思います。
の処理が必要です。具体的には、末尾の要領で如何でしょう?
loaddll "tkinfo.dll";
#n = dllfunc("NewMail");
showwindow 0;
#editor = hidemaruhandle(0);
#n = dllfunc("SwitchHeaderView",0);
gofiletop;
beginsel;
gofileend;
delete;
#n = dllfunc("SetMainWndTop");
#n = dllfunc( "DisableDraw", 1 );
$tmp = getenv( "TEMP" );

#count = dllfunc("SelectedMailCount");
if( #count == 0 ) {
 endmacro;
}
#n = dllfunc("LockSelection");
while(1){
  #n = dllfunc("EnumSelection", 1);
   if( #n == 0 ){
    break;
  }

  $file = dllfuncstr("CurrentHeader","From");
  $file = dllfuncstr("SetEmailOnly",$file);
  $file = $tmp + "\\" + $file + ".count_list";

  setactivehidemaru #editor;
  insert "a";
  if( existfile( $file ) ){
    appendsave $file;
  }
  else saveas $file;
  gofiletop;
  beginsel;
  gofileend;
  delete;
  #n = dllfunc("SetMainWndTop");
}
#n = dllfunc("SetMainWndTop");
setactivehidemaru #editor;
disabledraw;
$shell = getenv( "COMSPEC" );
beginsel;
run $shell + " /c dir \"" + $tmp + "\\*.count_list\" > con";
run $shell + " /c del \"" + $tmp + "\\*.count_list\" > con";
//↑一時ファイルの削除をしているけど、NT 系では上手くいかないかも
#n = dllfunc( "SetMainWndTop");
#n = dllfunc( "EnableDraw", 0 );
setactivehidemaru #editor;
showwindow 1;

[ ]
RE:26968 各人ごとの一ヶ月間の投稿回数リNo.26969
nari さん 06/04/01 01:21
 
 Iranoanさんまいどです。

> 作成されたマクロだと、投稿回数分だけ a が書き込まれていませんか?

 私が作ったマクロは間違っているんですね・・。ファイルの中にはaが書き込まれ
ていません。
 メールの内容が書き込まれてしまっています。

>の処理が必要です。具体的には、末尾の要領で如何でしょう?

 そのまま使わせていただいたところうまくいきました。
 一時ファイル削除の行の意味はわかりましたので、そこを削除して
確認しましたが、Iranoanさんのだと一時ファイルの中には投稿回数分
のaのみ書き込まれています。

 これを機会に少しマクロをいじってみようかと思います。ありがとうございました。

[ ]