atwiki-logo
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このウィキの更新情報RSS
    • このウィキ新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡(不具合、障害など)
QMAIL3 まとめサイト
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
QMAIL3 まとめサイト
  • ウィキ募集バナー
  • 目安箱バナー
  • 操作ガイド
  • 新規作成
  • 編集する
  • 全ページ一覧
  • 登録/ログイン
ページ一覧
QMAIL3 まとめサイト
  • 新規作成
  • 編集する
  • 登録/ログイン
  • 管理メニュー
管理メニュー
  • 新規作成
    • 新規ページ作成
    • 新規ページ作成(その他)
      • このページをコピーして新規ページ作成
      • このウィキ内の別ページをコピーして新規ページ作成
      • このページの子ページを作成
    • 新規ウィキ作成
  • 編集
    • ページ編集
    • ページ編集(簡易版)
    • ページ名変更
    • メニュー非表示でページ編集
    • ページの閲覧/編集権限変更
    • ページの編集モード変更
    • このページにファイルをアップロード
    • メニューを編集
    • 右メニューを編集
  • バージョン管理
    • 最新版変更点(差分)
    • 編集履歴(バックアップ)
    • アップロードファイル履歴
    • ページ操作履歴
  • ページ一覧
    • このウィキの全ページ一覧
    • このウィキのタグ一覧
    • このウィキのタグ一覧(更新順)
    • このページの全コメント一覧
    • このウィキの全コメント一覧
    • おまかせページ移動
  • RSS
    • このwikiの更新情報RSS
    • このwikiの新着ページRSS
  • ヘルプ
    • ご利用ガイド
    • Wiki初心者向けガイド(基本操作)
    • このウィキの管理者に連絡
    • 運営会社に連絡する(不具合、障害など)
  • atwiki
  • QMAIL3 まとめサイト
  • スクリプト集

スクリプト集

最終更新:2007年10月22日 00:04

Bot(ページ名リンク)

- view
だれでも歓迎! 編集
トップ > スクリプト集
  • hyperqm
  • hyperqm.js
  • Browser.js
  • EditByEditor.js
  • Googleで検索
  • AddSama.js
  • _chkToSubject.js

hyperqm

QMAIL3の全文検索をちょっぴりGmail風にするツール

QMAIL3はHyper Estraierと組み合わせて使用することで、高速な全文検索を行うことができます。
大変便利で強力な機能なのですが、メール本文に対しての検索しか行うことができません。
メールの属性(送信者、宛先、日時、etc)を対象とした条件も使用できれば・・・。
そんな思いから、このツールを作ってみました。(Musee d'Dimanche より引用)

Musee d'Dimanche
http://freemind.s57.xrea.com/hyperqm/

hyperqm.js

hyperqm.exeをちょっぴり使いやすくするツール
  • hyperqm.exeのソースをJScriptに移植したもの。
  • hyperqm.exeと同じフォルダにhyperqm.jsというファイル名でソースを保存して使ってください。
  • QMAIL3検索オプションでカスタムにして検索のところを「cscript hyperqm.js "$index" "$condition" $encoding」とする。
  • 検索式もhyperqm.exeと同じでそれに加えて下記が可能。
  1. 属性のOR:「from,cc:hoge,foo」とすれば「hoge」または「foo」が「fromまたはcc」にあるメールを検索。→「"from,cc:hoge foo"」と「"」で括って検索対象を「半角空白」で区切っても可。
  2. 属性の否定:「hoge -from:foo」とすれば、本文に「hoge」を含み「from」が「foo」を含まないメールを検索。

main();
function main(){
var WshShell = new ActiveXObject('WScript.Shell');
var ARGV = WScript.Arguments;
var index = ARGV(0);
var char_code = ARGV(ARGV.length-1);
var tmp = ARGV(1);
for(var i=2;i<ARGV.length-1;i++){tmp+=" " + ARGV(i)}
if(ARGV.length>=3){
	tmp=tmp.replace(/\\(\S+?( \S+?)+?)\\/g,"\"$1\"");
}
var parser = new StringParser(tmp);
var attr_str = parser.attr_str;
var search_phrase = parser.search_phrase;

if(debug){
  var fso, f;
  var ForReading = 1, ForWriting = 2;
  fso = new ActiveXObject("Scripting.FileSystemObject");
  f = fso.OpenTextFile("C:\\Program Files\\QMAIL3\\testfile.txt", ForWriting, true);
  tmp+= "\n---------\n";
  tmp+= attr_str;
  tmp+= "\n---------\n";
  tmp+= search_phrase;
  tmp+= "\n---------\n";
  for(i=0;i<ARGV.length;i++){tmp+=ARGV(i) + "\n"}
  f.Write(tmp);
  f.Close();
}

var objExec = WshShell.Exec('estcmd search -nl -ic ' + char_code + ' -vu -aux 99 -max -1' + attr_str + ' "' + index + '" "' + search_phrase + '"');
while(!objExec.StdOut.AtEndOfStream) {
	WScript.StdOut.WriteLine(objExec.StdOut.ReadLine());
}
}

function StringParser(arg){
var inputted_str = arg
var search_phrase = '';
var attribute_condition_ary = new Array();
var r, str;
while(r=inputted_str.match(/\"(.*?)\"/)){
	str = inputted_str.slice(r.index + 1, r.lastIndex - 1);
	if(str.indexOf(':') != -1){
		attribute_condition_ary = attribute_condition_ary.concat(attribute(str));
	}else{
		if(search_phrase.length > 0){
			search_phrase += ' AND ';
		}
		search_phrase += str;
	}
	inputted_str = inputted_str.slice(0,r.index) + inputted_str.slice(r.lastIndex);
}

var strs = inputted_str.split(/ | /);
for(var key in strs){
	str = strs[key];
	if(!str){continue;}
	if(str.indexOf(':') != -1){
		attribute_condition_ary = attribute_condition_ary.concat(attribute(str));
		continue;
	}
	if(search_phrase.length > 0){
		if(str == 'OR'){
			search_phrase += ' OR';
			continue;
		}else if(search_phrase.match(/.+ OR$/)){
			search_phrase += ' ';
		}else if(str.charAt(0) == '-'){
			search_phrase += ' ANDNOT ';
			str = str.slice(1);
		}else{
			search_phrase += ' AND ';
		}
	}
	search_phrase += str;
}
if(search_phrase.length == 0){
	search_phrase = '[UVSET]';
}

var attr_str = '';
if(attribute_condition_ary && attribute_condition_ary.length > 0){
	for(key in attribute_condition_ary){
		attr_str += ' -attr "' + attribute_condition_ary[key] + '"';
	}
}
this.source = arg;
this.attr_str = attr_str;
this.search_phrase = search_phrase;
}

function attribute(str){
var str_ary = str.split(':');
if(!str_ary){return}
if(str_ary[0] == 'after'){
	return "@cdate NUMGE " + Math.round(Date.parse(str_ary[1])/1000);
}else if(str_ary[0] == 'before'){
	return "@cdate NUMLT " + (Math.round(Date.parse(str_ary[1])/1000) + 60*60*24);
}else if(str_ary[0].charAt(0) == '-'){
		var ary = str_ary[0].slice(1).split(',');
		var a = new Array();
		for(var key in ary){
			if(!str_ary[1]){
				continue;
			}else{
				a=a.concat(ary[key] + " !ISTRRX " + escapeReg(str_ary[1]));
			}
		}
		return a;
}else if(str_ary[1].match(/,| |\|/)){
	return str_ary[0] + " ISTRRX " + escapeReg(str_ary[1]);
}else if(!str_ary[1]){
	return str_ary[0];
}else{
	return str_ary[0] + " ISTRINC " + str_ary[1];
}
}
function escapeReg(str){
var tmp=str;
tmp = str.replace(/(\\|\$|\*|\+|\?|\^|\(|\))/g,"\\$1");//.のエスケープ不要?
return tmp.replace(/,| |\|/g,'|');
}

Browser.js

標準ブラウザ以外で開くスクリプト。
Browser.jsという名前でQmail3のscriptsフォルダに保存。
メールのurlを範囲指定してから「ツール」-「スクリプト」で選択。
var browser = "iexplore.exe";
//var browser = "opera.exe";
//var browser = "firefox.exe";
//var browser = "Netscp.exe";

actionTarget.invokeAction("EditCopy");
var macro = macroParser.parse("@Clipboard()");
var url = macro.evaluate(application.nothing, application.nothing);

var shell = new ActiveXObject("WScript.Shell");
shell.Run(browser + " " + url);
起動したいブラウザのコメント(//)はずしてください。
上記ではIEが起動してます。

EditByEditor.js

EmEditorでメール編集するためのスクリプト。
テンポラリファイルをUTF-8にしているので、Shift-JIS以外の言語でも問題ありません。
下記のスクリプトをEditByEmeditor.jsとしてscriptsフォルダに保存してください。
また、最初の二行はそれぞれの環境に合わせてパスを変更する必要があります。テンポラリファイルの拡張子はお好みで適当に変えてください。
var editor = "\"C:\\Program Files\\EmEditor\\emeditor.exe\" /sp ";
var tempFile = "C:\\Windows\\temp\\spellcheck.qhtml";

var adTypeText = 2;
var adSaveCreateOverWrite = 2;
function SaveText(filename, text, charset)
{
   var stm = new ActiveXObject("ADODB.Stream");
   stm.Type = adTypeText;
   stm.Charset = charset;
   stm.Open();
   stm.WriteText(text);
   stm.SaveToFile(filename, adSaveCreateOverWrite);
   stm.Close();
}

function LoadText(filename, charset)
{
   var stm = new ActiveXObject("ADODB.Stream");
   stm.Type = adTypeText;
   stm.Charset = charset;
   stm.Open();
   stm.LoadFromFile(filename);
   var text = stm.ReadText();
   stm.Close();
   return text;
}


editFrameWindow.invokeAction("EditSelectAll");
editFrameWindow.invokeAction("EditCopy");
var getClipboardMacro = macroParser.parse("@Clipboard()");
var inText = getClipboardMacro.evaluate(application.nothing, document.accounts(0));

 SaveText(tempFile, inText, "UTF-8");

 // Editorを起動して終了するまで待つ
 var shell = new ActiveXObject("WScript.Shell");
 var flag=shell.Run(editor + tempFile, 5, true);
 
 macroParser.parse("@MessageBox(\"Editor編集後のファイルを読み込みます\")").evaluate(application.nothing, application.nothing);

 // Editorが修正したファイルを読み込む
 var outText = null;
 outText = LoadText(tempFile, "UTF-8");

 // クリップボードを経由してエディットビューに貼り付け
 var setClipboardMacro = macroParser.parse("@Clipboard($value)");
 setClipboardMacro.setVariable("value", outText);
 setClipboardMacro.evaluate(application.nothing, document.accounts(0));
 editFrameWindow.invokeAction("EditSelectAll");
 editFrameWindow.invokeAction("EditPaste");
 editFrameWindow.invokeAction("EditMoveDocStart");
try {
 var fs = new ActiveXObject("Scripting.FileSystemObject");
 fs.DeleteFile(tempFile);
}
finally {
}

Googleで検索

本家メモにあります。
http://snak.tdiary.net/20050927.html#p01

AddSama.js

メールに「様」をつけるスクリプト。
付けたいときに付ける事が出来ます。
AddSama.jsという名前でQmail3のscriptsフォルダに保存。
メールのurlを範囲指定してから「ツール」-「スクリプト」で選択。
addSAMA(0);//To
addSAMA(1);//Cc
addSAMA(2);//Bcc
function addSAMA(n){
var address=getText(n).replace(/(?!様)("?) </g,"様$1 <");
var setClipboardMacro = macroParser.parse("@Clipboard($value)");
setClipboardMacro.setVariable("value", address);
setClipboardMacro.evaluate(application.nothing, document.accounts(0));
editFrameWindow.invokeAction("EditPaste");
}
function getText(n){
var putClipboardMacro = macroParser.parse("@Clipboard('')");
putClipboardMacro.evaluate(application.nothing, application.nothing);
editFrameWindow.invokeAction("ViewFocusEditItem","@" + n);
editFrameWindow.invokeAction("EditSelectAll");
editFrameWindow.invokeAction("EditCopy");
var getClipboardMacro = macroParser.parse("@Clipboard()");
var inText = getClipboardMacro.evaluate(application.nothing, application.nothing);
return inText;
}


_chkToSubject.js

送信メールのToとSubjectが空の場合に警告します。
おまけで、本文に「添付」「attached」「attachment」の単語が存在すると、送信の可否を聞いてきます。マクロの方法と違い、実際に添付ファイルがあってもなくても送信の可否を聞いてきます。
通常はメール作成にあるマクロを使用してください。
マクロでは機能しないIMAP4での使用を意図しています。
下記を _chkToSubject.js という名前で scripts フォルダに保存してください。

// エディットビューからto,cc,subjectが空かを判定
// 

var cmd=1;//変更可

// 1:通常の送信(巡回待ち)
// 2:すぐに送信
// 0:Debug

// クリップボードを空にする
var outText = "";
var setClipboardMacro = macroParser.parse("@Clipboard($value)");
setClipboardMacro.setVariable("value", outText);
setClipboardMacro.evaluate(application.nothing, document.accounts(0));

var flag=true;
if(chkBlank(0)){//To
	flag = setClipboardMacro = macroParser.parse("@Equal(6,@MessageBox(@Concat('To',' がないけど送信する?\n-------------------------\n はい(Y) - そのまま送信\n いいえ(N)- 再編集'),68))").evaluate(application.nothing, application.nothing);
}
if(flag&&chkBlank(5)){//Subject
	flag = setClipboardMacro = macroParser.parse("@Equal(6,@MessageBox(@Concat('Subject',' がないけど送信する?\n-------------------------\n はい(Y) - そのまま送信\n いいえ(N)- 再編集'),68))").evaluate(application.nothing, application.nothing);
}
if(flag){
	editFrameWindow.invokeAction("ViewFocusEditItem","@8");//署名
	editFrameWindow.invokeAction("ViewFocusNextEditItem");//次のアイテムに移動
	// テキストをすべて選択してクリップボードにいれ、
	// クリップボード経由でテキストを取得する
	editFrameWindow.invokeAction("EditMoveLineStart");
	editFrameWindow.invokeAction("EditSelectAll");
	editFrameWindow.invokeAction("EditCopy");
	var getClipboardMacro = macroParser.parse("@Clipboard()");
	var inText = getClipboardMacro.evaluate(application.nothing, document.accounts(0));
	if(inText.match(/添付|attached|attachment/i)){
		flag = setClipboardMacro = macroParser.parse("@Equal(6,@MessageBox(@Concat('添付',' がないけど送信する?\n-------------------------\n はい(Y) - そのまま送信\n いいえ(N)- 再編集'),68))").evaluate(application.nothing, application.nothing);
	}else{
		flag=true;
	}
	editFrameWindow.invokeAction("EditMoveDocStart");//カーソルを文頭に移動
}
if(flag){
	if(cmd==2){editFrameWindow.invokeAction("FileSendNow")}
	else if(cmd==1){editFrameWindow.invokeAction("FileSend")}
	else{
		macroParser.parse("@MessageBox('送信するアクション実行')").evaluate(application.nothing, application.nothing);
	}
}
if(cmd!=1&&cmd!=2){
	macroParser.parse("@MessageBox('" + flag + "')").evaluate(application.nothing, application.nothing);
}

function chkBlank(n){
	if(getText(n)){return false}
	else {return true}
}
function getText(n){
	var putClipboardMacro = macroParser.parse("@Clipboard('')");
	putClipboardMacro.evaluate(application.nothing, application.nothing);
	editFrameWindow.invokeAction("ViewFocusEditItem","@" + n);
	editFrameWindow.invokeAction("EditSelectAll");
	editFrameWindow.invokeAction("EditCopy");
	var getClipboardMacro = macroParser.parse("@Clipboard()");
	var inText = getClipboardMacro.evaluate(application.nothing, application.nothing);
	return inText;
}

「ツール」-「スクリプト」から選択してもいいですが面倒なので、下記のようにツールバーに登録しておくと便利です。
<toolbar name="editframe" showText="true">
の中に下記を書きます。
<button image="15" action="ToolScript" param='_chkToSubject' text="送信★"/>

タグ:

+ タグ編集
  • タグ:
タグの更新に失敗しました
エラーが発生しました。ページを更新してください。
ページを更新
「スクリプト集」をウィキ内検索
LINE
シェア
Tweet
QMAIL3 まとめサイト
記事メニュー

メニュー

  • トップページ
  • 2ch過去ログ

パソコン版

  • 設定集
  • スクリプト集
  • アイコン集
  • FAQ

モバイル版

  • 設定集2
  • FAQ2

マクロ等

  • メール作成
  • メール管理
  • メール振り分け
  • メール検索

その他

  • 関連リンク
  • 関連情報
  • コメント

Count : -
記事メニュー2

サイト内検索

更新履歴

取得中です。

ツール

  • RSS
  • このページを編集
最近更新されたページ
  • 2735日前

    コメント
  • 3771日前

    2ch過去ログ
  • 5389日前

    メール検索
  • 5540日前

    FAQ
  • 5542日前

    関連リンク
  • 5594日前

    設定集2
  • 5732日前

    メール作成
  • 5941日前

    FAQ2
  • 6194日前

    メール管理
  • 6382日前

    設定集
もっと見る
最近更新されたページ
  • 2735日前

    コメント
  • 3771日前

    2ch過去ログ
  • 5389日前

    メール検索
  • 5540日前

    FAQ
  • 5542日前

    関連リンク
  • 5594日前

    設定集2
  • 5732日前

    メール作成
  • 5941日前

    FAQ2
  • 6194日前

    メール管理
  • 6382日前

    設定集
もっと見る
ウィキ募集バナー
新規Wikiランキング

最近作成されたWikiのアクセスランキングです。見るだけでなく加筆してみよう!

  1. MadTown GTA (Beta) まとめウィキ
  2. R.E.P.O. 日本語解説Wiki
  3. シュガードール情報まとめウィキ
  4. 機動戦士ガンダム EXTREME VS.2 INFINITEBOOST wiki
  5. SYNDUALITY Echo of Ada 攻略 ウィキ
  6. ソードランページ @ 非公式wiki
  7. シミュグラ2Wiki(Simulation Of Grand2)GTARP
  8. 星飼いの詩@ ウィキ
  9. ドラゴンボール Sparking! ZERO 攻略Wiki
  10. harosui_souko @ ウィキ
もっと見る
人気Wikiランキング

atwikiでよく見られているWikiのランキングです。新しい情報を発見してみよう!

  1. アニヲタWiki(仮)
  2. ストグラ まとめ @ウィキ
  3. MadTown GTA (Beta) まとめウィキ
  4. ゲームカタログ@Wiki ~名作からクソゲーまで~
  5. 初音ミク Wiki
  6. 機動戦士ガンダム バトルオペレーション2攻略Wiki 3rd Season
  7. 発車メロディーwiki
  8. Grand Theft Auto V(グランドセフトオート5)GTA5 & GTAオンライン 情報・攻略wiki
  9. 検索してはいけない言葉 @ ウィキ
  10. オレカバトル アプリ版 @ ウィキ
もっと見る
全体ページランキング

最近アクセスの多かったページランキングです。話題のページを見に行こう!

  1. 参加者一覧 - ストグラ まとめ @ウィキ
  2. 魔獣トゲイラ - バトルロイヤルR+α ファンフィクション(二次創作など)総合wiki
  3. ジロリアンコピペ - ラーメン二郎 wiki
  4. 五条新菜 - アニヲタWiki(仮)
  5. 羊宮妃那 - アニヲタWiki(仮)
  6. ギアス(コードギアス) - アニヲタWiki(仮)
  7. サーヴァント/一覧/クラス別 - Fate/Grand Order @wiki 【FGO】
  8. ロスサントス警察 - ストグラ まとめ @ウィキ
  9. anbrella(餡ブレラ) - ストグラ まとめ @ウィキ
  10. Wonda Darkness - ストグラ まとめ @ウィキ
もっと見る

  • このWikiのTOPへ
  • 全ページ一覧
  • アットウィキTOP
  • 利用規約
  • プライバシーポリシー

2019 AtWiki, Inc.