鶴亀マクロで引用箇所の調整可能?No.05192
cuma さん 02/05/06 17:22
 
いつもお世話になっています。
鶴亀のマクロでメール返信時に引用する元メール本文の範囲を
特定可能でしょうか?

具体的には以下のようなイメージです。

−−−−メール本文−−−−

だらだら無駄な前置きが
複数行あります。
だら
だら
だら

○お客様住所情報○
この部分は引用添付します

ここまでお客様情報です。

また無駄データがだらだら
だらだら
−−−ここまで本文イメージ−−−
私が返信引用したいのは、
○お客様住所情報○
の行から
ここまでお客様情報です。
の行までなんです。

その前も後ろも不要なので普段は引用された後で削除してますが
時々ミスしそのまま無駄引用をしております。
マクロで可能だとスムーズでミスがなくなりそうです。

毎度よろしくお願い致します。

[ ]
RE:05192 鶴亀マクロで引用箇所の調整可能No.05194
アルビレオ さん 02/05/06 18:02
 
>いつもお世話になっています。
>鶴亀のマクロでメール返信時に引用する元メール本文の範囲を
>特定可能でしょうか?

まず、引用範囲をユーザが手動で指定することで十分ならマクロなしでも可能です。
「設定」→「フォルダごとの設定」→「テンプレート」で
「メール作成時に以下のテンプレート/署名を使う」をONにします。
「返信メール」のテンプレートはデフォルトでは

 $(SetNameOnly,$(CurrentHeader,From))です。

$c$(QuotedRootBody)

となっているので下の行の $(QuotedRootBody) を $(SelectedRootText)に書き換え
ます。
詳しくはヘルプの「テンプレートの文法」を参照してください。

>その前も後ろも不要なので普段は引用された後で削除してますが
>時々ミスしそのまま無駄引用をしております。
>マクロで可能だとスムーズでミスがなくなりそうです。

マクロで引用範囲を自動的に決めたいのなら引用開始位置と引用終了位置を
特定するためにある程度はっきりしたルールが必要です。
「○お客様住所情報○」「ここまでお客様情報です。」という文が
必ず本文中の正しい位置にある、本文中に複数出てこないということであれば
上に挙げたテンプレートと併用することで引用範囲を自動で決めることも可能です。

[ ]
RE:05194 鶴亀マクロで引用箇所の調整可能No.05195
cuma さん 02/05/06 20:42
 
アルビレオさん、早速ありがとうございます。

>マクロで引用範囲を自動的に決めたいのなら引用開始位置と引用終了位置を
>特定するためにある程度はっきりしたルールが必要です。
>「○お客様住所情報○」「ここまでお客様情報です。」という文が
>必ず本文中の正しい位置にある、本文中に複数出てこないということであれば

その条件で大丈夫です。

>上に挙げたテンプレートと併用することで引用範囲を自動で決めることも可能です。

引用範囲を自動で決める方法を知りたいです。
よろしくお願い致します。

[ ]
RE:05195 鶴亀マクロで引用箇所の調整可能No.05196
アルビレオ さん 02/05/07 00:05
 
>アルビレオさん、早速ありがとうございます。
>
>>マクロで引用範囲を自動的に決めたいのなら引用開始位置と引用終了位置を
>>特定するためにある程度はっきりしたルールが必要です。
>>「○お客様住所情報○」「ここまでお客様情報です。」という文が
>>必ず本文中の正しい位置にある、本文中に複数出てこないということであれば
>
>その条件で大丈夫です。
>
>>上に挙げたテンプレートと併用することで引用範囲を自動で決めることも可能です。
>
>引用範囲を自動で決める方法を知りたいです。
>よろしくお願い致します。

このマクロを使用する前に前述のテンプレートを設定しておく必要があります。

----ここから
escape; //範囲選択の解除
gofiletop; //ファイル先頭に移動
searchdown "○お客様住所情報○"; //引用先頭位置を検索
beginsel; //範囲選択開始
searchdown "ここまでお客様情報です。"; //引用終端位置を検索
down; //最後の行を含めるためにカーソルを移動
if( dllfunc( "MakeReply" )==0 ) //返信メールの作成
    message "返信メールの作成に失敗しました。";
----ここまで

引用範囲に「○お客様住所情報○」「ここまでお客様情報です。」を含めたくない場
合は
down;をbeginsel;の前の場所に移動してください。
MakeReply のかわりに MakeReplyCustom を使うとより細かいカスタマイズが可能で
すが、
その部分は「鶴亀マクロヘルプ」を読んで自分で設定してください。

テストしていませんが、こんな感じです。(^^;
実は鶴亀のマクロは全く使ったことがないのでマクロに詳しい方から見ておかしなと
ころ、
直した方がよい部分があれば指摘をお願いします。

[ ]
RE:05196 鶴亀マクロで引用箇所の調整可能No.05199
cuma さん 02/05/07 07:45
 
アルビレオさん、皆さん、毎度お世話様です。
dllのエラーが出たのでよくわからずに以下の●の行を自分で
勝手に追加して実験しましたが、引用が全くされない状況で
返信メールが出来てしまいます。
なお、引用開始と終了のキーワードは、再度検討して変更して
おり当初イメージと異なりますのでご了承ください。

//引用範囲切り出しマクロ アルビレオさん
loaddll "tkinfo.dll"; ●
escape; //範囲選択の解除
gofiletop; //ファイル先頭に移動
searchdown "お名前 ="; //引用先頭位置を検索
beginsel; //範囲選択開始
searchdown "登録番号 :"; //引用終端位置を検索
down; //最後の行を含めるためにカーソルを移動
if( dllfunc( "MakeReply" )==0 ) //返信メールの作成
    message "返信メールの作成に失敗しました。";
freedll; ●
endmacro; ●

またテンプレートは当フォルダに対して返信のテンプレートとして
以下のように書いてます。

$(ExecMacro,"address100.mac")$-
$(RootHeader,From)様へ
$(SetHighPriority,1)$-
$(SetRequestNotification,1)$-
$(SetHeader ,Subject," お見積もり")$-

以下は受信メールカーボンコピーです。

$(ExecMacro,"100_inyou_del.mac")$-

返信ボタンを押した結果は以下のようになって引用は全く
されませんでした。自力で直すにはめちゃくちゃになりそうで
ここまでひな形を頂いて更に厚かましいのですが、是非是非
継続ご指導をお願い致します。

>以下は受信メールカーボンコピーです。
>


[ ]
RE:05199 鶴亀マクロで引用箇所の調整可能No.05200
cuma さん 02/05/07 08:29
 
cumaです。

肝心なコメントが漏れてました。

>$(ExecMacro,"address100.mac")$-

これは、以前にこの掲示板で教えて頂いた、本文からのメールアドレス抽出の
マクロです。今回の問題とは無関係です。

>$(ExecMacro,"100_inyou_del.mac")$-

こっちが今回オルビレオさんからご教授頂いたマクロです。

以上、肝心な部分の説明漏れて質問してしまいました。

[ ]
RE:05200 鶴亀マクロで引用箇所の調整可能No.05203
cuma さん 02/05/07 09:00
 
 cumaです。

$(QuotedRootBody)

の一行をフォルダの返信テンプレートに書き忘れてました。
これを追加した状態では、普通に$(QuotedRootBody)の引用効果が
出ていて、引用範囲外を削除する機能が働いている形跡がまだ無い
ようです。

たびたびの状況変更で恐縮ですが、よろしくご指導お願い致します。

[ ]
RE:05203 鶴亀マクロで引用箇所の調整可能No.05207
秀まるお さん 02/05/07 18:18
 
 $(ExecMacro,...)を使って引用したい範囲を選択させることは出来ないです。
なぜならここで指定されたマクロは返信メール用のエディタが起動した後に実行
されるからです。

 引用したい範囲を選択してから返信するには、「返信メール」というコマンド
を実行する前にマクロ実行させないとダメです。

 例えばですが、

---------
   ...
   beginsel;
   finddown ...
   ...
   #n = dllfunc("MakeReply");
---------

 のような感じのマクロを作成し、それを実行して返信するような形になります。
「返信メール」というコマンドを使っては絶対ダメです。

 もし、「返信メール」の配下で動作させたいなら、「範囲選択してからうんぬ
ん」という手段ではなく、引用元のメール全体を挿入させてから不要部分を削除
するようなマクロにしないとダメです。

 そういうことでご自分でトライして欲しいです。

[ ]
RE:05207 鶴亀マクロで引用箇所の調整可能No.05212
アルビレオ さん 02/05/07 22:37
 
アルビレオです

秀まるおさんがだいたい説明してくれましたが、私が作ったのは
「元メールで実行すると、特定の部分を引用した返信メールを作成するマクロ」なので
「返信メールを作成するとテンプレートから呼び出されるマクロ」とは全く違うもの
です。

しかも私のマクロを正しく実行すると、すでに必要な部分だけに限定された引用しか
持っていないので address100.mac で取り出すべきメールアドレスはすでに削除され
た状態になっていて address100.mac は無意味になってしまいます。

そういうわけで cuma さんの要望を実現するためには、いったん全文を引用した返信
メールを作成し(通常の動作)
address100.mac でメールアドレスを取り出した後で不要な引用部分を削除するよう
な動作にする必要があります。
この場合の 100_inyou_del.mac の概略を書くと

1.先頭部分に移動
2."xxx様へ","以下は..." を削除しないように下へカーソル移動
3.範囲選択開始
4.引用の先頭を検索
5.削除(範囲選択中なので選択された部分が削除されます)
6.引用の終端を検索
7.範囲選択開始
8.ファイルの最後へ移動
9.削除(範囲選択中なので選択された部分が削除されます)

というような感じになります。

私の書いたコメントを参考にがんばって改造してみてください。

#あれ?address100.mac は $(RootBody) がなくても実行可能なんですか?
#きっとマクロ内部で内部で文字列変数として直接引用しているんでしょうね。

てことはテンプレートの $(ExecMacro,"100_inyou_del.mac")$- の前に $(QuotedRoo
tBody) を追加してください。

[ ]
RE:05212 鶴亀マクロで引用箇所の調整可能No.05224
cuma さん 02/05/10 06:50
 
アルビレオさん、秀まるおさん、回答ありがとうございます。
今、自分で勉強中です。
たぶん失敗しますので、またアドバイスお願いします。

[ ]
RE:05224 鶴亀マクロで引用箇所の調整可能No.05227
cuma さん 02/05/10 08:54
 
アルビレオさん、秀まるおさん、成功しました。
こんなマクロを返信テンプレートに入れて見ました。
アドバイスありがとうございました。

それにしても当初頂いたマクロを私は一人で勘違いしたんですね。
それだけ不注意でマクロ不勉強だと言う証拠と思います。
こんな状態ですが、気長にこれからもご指導よろしくお願い
致します。

PS
 とりあえず動作は思った通りなのですが、マクロ記述として
変な部分等あればご指導お願い致します。

//引用範囲切り出しマクロ アルビレオさんアドバイス
//ケース100用
loaddll "tkinfo.dll";
escape; //範囲選択の解除

//上冗長削除処理
//$(RootBody)先頭位置検索
searchdown "以下は受信メールカーボンコピーです。";
down; //最後の行を含めるためにカーソルを移動
beginsel; //範囲選択開始
searchdown "お名前 ="; //引用先頭位置を検索
left; //名前の直前行の右端にカーソル移動
delete;  //カーボン次行からお名前直前まで削除
//上冗長削除完了

//下冗長削除処理
escape; //範囲選択の解除
searchdown "登録番号 :"; //引用終端位置を検索
down; //最後の行を含めるためにカーソルを移動
beginsel; //範囲選択開始
gofileend; //ファイル終端へ移動
delete;  //登録番号の次行から終端まで削除
escape; //範囲選択の解除
//下冗長削除完了

freedll;
endmacro;

[ ]