カテゴリー
Wiki内検索
*
最近更新したページ
最新コメント
win32/guitest by stunning seo guys
FrontPage by stunning seo guys
SWIG by awesome things!
Win32/Console by stunning seo guys
FrontPage by awesome things!
Win32SDK_ICM by stunning seo guys
Win32SDK_MM by check it out
Win32SDK_process by stunning seo guys
VisualuRuby by stunning seo guys

秀丸メールマクロヘルプ15

コマンド一覧

検索関係(秀丸メール本体上のみ)





GetFindPack関数(TKInfo.dll)


 GetFindPack関数は、秀丸メールの「現在の検索パック」の内容を文字列に変換して返します。この関数は、「検索して一覧作成」や「メールアドレス検索」、「上検索/下検索」のそれぞれの時にしか有効でないフラグの値も含めてすべての状態を返します。


返り値(文字列型)


 検索パック文字列を返します。


備考


 この関数は、subfolder=、inmail=、の2つの値も常に返します。



    $s = dllfuncstr("GetFindPack");
    message $s;





SetFindPack, YenEncode関数(TKInfo.dll)


 SetFindPack関数は、パラメータで指定した検索パック文字列を、秀丸メールの「現在の検索パック」として設定します。

 YenEncode関数は、秀丸エディタのinput関数などで入力された文字列をSetFindPack用に変換する関数です。使い方については最後に説明します。


パラメータ1(文字列型)


 検索パック文字列です。形式については備考を参照ください。


返り値(数値型)


 検索パック文字列の解析に成功した場合は1、失敗した場合はエラーメッセージを出すと同時に0を返します。


備考


 検索パック文字列は、複数の検索条件の組み合わせに、さらにフラグなどが組合わさった物です。例えば、

 "abc"が「Subject:」ヘッダにあって、さらに"xyz"が本文にある

 のような条件は、

("abc", target=subject) and ("xyz", target=body)

 のように、複数の検索条件のセットをandまたはorで連結させた物が基本となります。さらに、フラグによる検索条件などを指定する時は、

("abc", target=subject) and ("xyz", target=body), flag=mark

 のように、後ろにコンマ区切りで条件を指定します。

1つの検索条件


 かっこ内に指定する検索条件は、以下のような形式となります。

( 検索文字列, target=XXXX, casesense, nocasesense, regular, fuzzy, word, not, noreturn )

 検索文字列はダブルクォーテーションで囲んだ検索対象文字列です。

 target=XXXXは、検索対象を指定します。XXXXの部分には、以下のパラメータが指定できます。

subject題名
from+to送り先/送り主(To/From/Reply-To/Cc/Bccヘッダ中)
from送り主(From/Reply-Toヘッダ中)
to送り先(To/Cc/Bccヘッダ中)
body本文
headerヘッダ
allヘッダ+本文
smallheader簡略ヘッダ
smallheaderbody簡略ヘッダ+本文
personメールアドレス検索用の指定、またはMessage-Id検索の指定。
その他、任意のヘッダ

 任意のヘッダを指定するときは、ヘッダ名をコロン付きで、さらにダブルクォーテーションで囲んで指定する必要があります。
 personは「メールアドレス検索」用の指定です。詳しくは後で説明します。
 target=を特に指定しなかった場合はtarget=subjectと同じ扱いとなります。

 casesense, nocasesense, regular, fuzzy, wordの指定は以下のような組み合わせとなります。途中のバージョンから「正規表現ありで、しかも大文字/小文字を区別しない検索」をサポートした関係で、オプション指定の組み合わせが少々ややこしくなっています。

大文字/小文字を区別しない普通の検索:なし
大文字/小文字を区別する普通の検索:casesense
大文字/小文字を区別しない単語検索:word
大文字/小文字を区別する単語検索:casesense, word
大文字/小文字を区別しない正規表現の検索:regular, nocasesense
大文字/小文字を区別する正規表現の検索:regular
大文字/小文字を区別しないあいまい検索:fuzzy, nocasesense
大文字/小文字を区別するあいまい検索:fuzzy

 notは、「見つからなかった方を対象とする」の意味です。
 noreturnは、「改行/空白を無視」の意味です。

オプション


 検索条件の後ろに指定するオプションには以下の種類があります。

 flag=

flag=は、「追加の条件」としてメールのフラグによる指定をするのに使います。単独のフラグを指定する場合は、「flag=mark」のように指定します。「でない」を指定するには、「flag=!mark」のように「!」記号を使います。
 複数のフラグを指定する場合は、ANDとORの2種類の指定があります。AND指定する場合は、「&」記号を使って複数のフラグを連結します。ORの場合は「|」です。例えば「flag=mark|unread」や「flag=unread&!mark」のように指定します。
 フラグには以下の種類があります。
markマーク
orikaeshi折り返し
cc複数宛先
attach添付ファイル付き
messageid「Message-Id:」ヘッダを含む
inreplyid「In-Reply-To:」ヘッダまたは「References:」ヘッダを含む
priority1優先順位:高のメール
unread未読
reply返信メール、または返信されたメール
forward転送メール、または転送されたメール
altered改変されたメール
hot新着メール
htmlHTMLメール
memoメモ付きメール
send送信メール(!sendの場合は受信メール)
sent送信済みメール(!sentは未送信メール)
color色つきメール
spam迷惑メール

さらに、期間を指定するdate=とtransmit=、サイズ範囲を指定するsize=、色を指定するcolortarget=が指定できます。これらについては「!」を付けることはできません。

  transmit=

 transmit=は、送受信時刻の範囲指定のために使います。指定する文字列は、ダイアログボックスで指定する範囲を「-」で区切って使います。例えば、
transmit=メーラー起動時-指定なし
 のように指定します。

  date=

 date=は、メール中のDate:ヘッダの示す日付/時刻の範囲指定のために使います。指定する文字列は、transmit=の場合と同じです。

  size=

 size=は、メールのサイズの範囲を指定します。size=1000-2000や、size=1K-2Kのように指定します。指定できる範囲文字列はダイアログボックスを参照ください。

  colortarget=

 colortarget=は、色つきメールを検索する時に、具体的な対象の色を指定するのに使います。色は番号で1〜15まで指定できます。番号と色の対応関係は、ダイアログボックス中での色の並び順と同じです。
 colortarget=を省略したり、「colortarget=0」を指定したりすると、すべての色つきメールが対象となります。
 colortarget=は「color」を指定した時でないと意味がありません。「!color」の指定も意味がありません。また、colortarget=自体には「&」、「|」の区別は関係ありません。さらには、「赤以外」のような指定はできません。

 ちなみに、受信メールでは送信済みかどうかのフラグは不定なので、受信メールを対象としたsent指定または!sent指定は結果が不定となります。

  「send&sent」 ... 送信済みメールのみ
  「send&!sent」 ... 未送信メールのみ
  「!send|sent」 ... 受信メールまたは送信済みメール
  「!send|!sent」 ... 受信メールまたは未送信メール

 といった使い方をしてください。


 subfolder=

 「検索して一覧作成」の時に、サブフォルダも含んで検索するかどうかのフラグ。0または1が指定できます。

 inmail=

 検索の時にメール内かフォルダ内検索か、あるいはアカウント内か全アカウントかを指定します。0はフォルダ内、1はメール内、2はアカウント内、3は全アカウント、4はアカウントグループ内となります(歴史的な理由により、「inmail」という名前になっています)。

 persontarget=

target=personとしてさらにpersontarget=を指定すると、メールアドレス検索という意味になります。
 メールアドレス検索の時の、対象ヘッダを指定します。指定できるのは、
From Reply-To To Cc Bcc
の5種類です。これらのヘッダ名を小文字にし、「|」記号でくっつけて複数指定してください。または、
all
 と指定すると上記の5種類すべてを指定したのと同じ意味になります。
 persontarget=の指定自体を省略した場合は「persontarget=from|reply-to|to|cc|bcc」と同じ扱いとなります。(互換性確保のため)

 例:
  persontarget=from|reply-to

 messageidtarget=

target=personとしてさらにmessageidtarget=を指定すると、Message-Id検索という意味になります。
 指定できるのは、
messageid inreplyid
 の2種類および、すべてを意味する
all
 です。それぞれMessage-Id検索ダイアログボックス上のチェックボックスに対応しています。具体的な対象についてはダイアログボックス側のヘルプを参照ください(制限がありますので)。
 例:
  messageidtarget=messageid|inreplyid

「メールアドレス検索」をするときの指定


 メールアドレス検索も、DoGrep関数で実行します。そのときの検索条件は以下のようにしてください。
検索対象が「すべてのアカウント」、または「現在アカウント」の場合:
  ("メールアドレス", target=person), subfolder=1, persontarget=all

検索対象が「現在フォルダ」の場合:
  ("メールアドレス", target=person), subfolder=0, persontarget=all


追加の条件のみの指定方法


 検索対象文字列は何も指定せず、フラグによる検索だけを指定したい場合には、
  "flag=mark+!unread"

 のように、検索文字列無しでいきなりflag=を指定してください。


「新着リスト」をするときの指定


 新着リストコマンドに相当する検索は、
  flag=!send&transmit=メーラー起動時-指定なし, subfolder=1
 として、DoGrep関数で検索対象フォルダを"受信+送信済み+ユーザー"として検索してください。


ヒント


 検索パック文字列の具体的な例については、特定の検索を実行した後で、tkinfo.dllのGetFindPack関数を使って検索パック文字列を取得するテストマクロなどを作って各自で調べていただくのが手っ取り早いです。



#n = dllfunc("SetFindPack", "(\"abc\", target=all), inmail=0" );


注意事項


 検索対象文字列の中に「"」を含めたい場合には、「\"」と記述してください。さらには、マクロで「\"」を指定するためには、「\\\"」と書く必要があります。間違いないようご注意ください。
 subfolder=およびinmail=の指定を省略した場合、これらの設定は前回の検索時の設定をそのまま引き継ぎます。


YenEncode関数


 YenEncode関数は、秀丸マクロのinput関数などで入力された普通の文字列を、SetFindPack用の検索対象文字列に変換する関数です。
 具体的には、ダブルクォーテーション記号および「\」記号の前に、「\」を挿入する処理をします。

    $s = input( "検索対象文字列は?" );
    $s = dllfuncstr( "YenEncode", $s );
    #n = dllfunc( "SetFindPack", "(\"" + $s + "\", target=all)" );

 のように使います。





FindUp, FindDown, FindUpInclude, FindDownInclude関数(TKInfo.dll)


 FindUp関数は、秀丸メール本体上で、「上候補」を実行します。FindDown関数は「下候補」を実行します。

 FindUp/FindDownする前に、普通、SetFindPack関数を使って検索条件を指定しておいてくだたさい。

 FindUp/FindDown関数は、秀丸メールの上候補/下候補コマンドと少し動きが違う部分があります。秀丸メールの上候補/下候補コマンドは、検索対象文字列の指定が1つだけの場合、メールを見つけてさらにそのメール中の対象文字列を探して強調表示/反転表示します。しかし、FindUp/FindDown関数では強調表示しません。さらに、その状態でFindUp/FindDownすると、そのメール中を検索することなく、上下方向に他のメールを検索しに行きます。これは、秀丸メール内部でのマクロ多重実行ができないための処置です。

 上記の制限のため、検索条件でinmail=1を指定した場合、検索は必ず失敗します。


FindUpInclude, FindDownInclude関数


 FindUp/FindDown関数は、現在選択しているメールをスキップして検索を実行します。FindUpIncludeおよびFindDownInclude関数は、現在選択しているメールも検索対象として検索を実行します。


SetViewAreaFoundBefore関数


 FindUp/FindDown関数を実行してフォルダをまたがった場合、ヒットした先のフォルダでの「表示範囲」が必ず「全体」に切り替わります。こうなってしまった表示範囲を元にもとしたい時は、このSetViewAreaFoundBefore関数を呼び出してください。
 この関数は、FindUp/FindDown関数を呼んで他のフォルダに移動させる前に呼んでください。他のフォルダに移動した後に呼ぶと、他のフォルダの表示範囲がおかしくなります。
 この関数を呼んでもし表示範囲を切り替えた場合は1を返し、表示範囲を切り替えなかった場合は0を返します。

返り値(数値型)


 検索で何かヒットした場合は1、見つからなかった場合(または検索がキャンセルされた場合)は0を返します。



    #n = dllfunc("SetFindPack", "(\"abc\",target=subject)");
    #n = dllfunc("FindDown");





DoGrep, StartDoGrep関数(TKInfo.dll)


 DoGrep関数は、現在の検索条件で「検索して一覧作成」または「メールアドレス検索」を実行します。
 「検索して一覧作成」になるか「メールアドレス検索」になるかは、検索条件の設定によります。

 StartDoGrep関数もDoGrep関数と同じく「検索して一覧作成」を実行する関数ですが、こちらの関数は、マクロが終了するのを待ってから遅延して「検索して一覧作成」を実行します。この関数は、「検索して一覧作成」の後に特にマクロで何かする目的が無い場合用で、検索に時間がかかる場合に検索を実行してるのと平行して何らかの操作をして、その過程で「マクロ実行中なので××が出来ない」のような不便なことが無いように用意してあります。

パラメータ1(文字列型)


 検索対象のアカウントを指定します。""を指定するとすべてのアカウントが検索対象となります。


パラメータ2(文字列型)


 検索対象のフォルダを指定します。パラメータ1に""を指定している場合は、以下の2つが指定できます。

  "" ... すべてのアカウントのすべてのフォルダを検索する(ただし、ログフォルダは除く)
  "受信+送信済み+ユーザー" ... すべてのアカウントの受信フォルダ配下および送信済みフォルダ配下およびアカウント直下のユーザーフォルダ。

 パラメータ1に何か適当なアカウントを指定している場合は、以下のパラメータが指定できます。

  "" アカウント内のすべてのフォルダ(ただし、ログフォルダは除く)
  "受信+送信済み+ユーザー" 受信フォルダ配下および送信済みフォルダ配下およびアカウント直下のユーザーフォルダ。
  その他 ... そのフォルダ。(例: "ゴミ箱", "受信\\TEST"など)

 過去のバージョンとの互換性の関係で、"受信+送信済み"と指定しても、それは"受信+送信済み+ユーザー"と解釈されます。


返り値(数値型)


 返り値には特に意味はありません(失敗するケースが無いとは言い切れませんが)。


備考


 「メールアドレス検索」を実行したい場合には、SetFindPack関数でtarget=personと指定しておいてください。

 「検索して一覧作成」の結果ウィンドウの中をマクロで参照することはできません。また、DoGrep関数は検索が終了(または中断)するまで返ってきません。DoGrepから復帰した後は、検索結果ウィンドウがアクティブになりますが、マクロの実行はそのままマクロ実行していたエディタ上で続行されます。

 StartDoGrep関数を呼び出した後は、すみやかにマクロを終了させてください。



  #n = dllfunc("DoGrep", "テストアカウント", "受信+送信済み+ユーザー");
  
  #n = dllfunc("StartDoGrep", "テストアカウント", "受信+送信済み+ユーザー");
  endmacro;





PushFindPack関数(TKInfo.dll)


 PushFindPack関数は、現在の検索条件を検索履歴に入れます。この関数は、SetFindPackした検索条件を履歴に保存したい場合に使います。


返り値(数値型)


 返り値には特に意味はありません(失敗するケースは無いはずです)。


補足


 SetFindPackでのsubfolder=およびinmail=の指定についてはPushFindPackで履歴に入れることができません。



#n = dllfunc("SetFindPack", "....");
#n = dllfunc("PushFindPack");




2006年05月17日(水) 05:09:40 Modified by aqualung




スマートフォン版で見る