「校正支援アウトプット」の版間の差分

提供: MeryWiki
ナビゲーションに移動 検索に移動
MSY-07 (トーク | 投稿記録)
セクションの修正
MSY-07 (トーク | 投稿記録)
変数にvarの宣言を追加、オブジェクト名の修正(マクロリファレンス:3:OutputBar オブジェクトを参照)
 
(同じ利用者による、間の13版が非表示)
1行目: 1行目:
== 概要 ==
== 概要 ==
Yahooの校正支援APIを利用して校正箇所を検索します<br>
Yahooの校正支援APIを利用して校正箇所を検索します。
検索結果をアウトプットバーに表示します<br>


[[ファイル:校正支援出力.zip]]
検索結果をアウトプットバーに表示します。


== 使い方 ==
== 使い方 ==
1.校正したいテキストを開くか、テキスト内の校正したい部分を範囲選択します<br>
# 校正したいテキストを開くか、テキスト内の校正したい部分を範囲選択します。
2.当マクロを実行すると、アウトプットバーに校正箇所がパス付きで表示されます<br>
# 当マクロを実行すると、アウトプットバーに校正箇所がパス付きで表示されます。
3.表示をダブルクリックするかF10キーの押下により該当箇所へジャンプできます<br>
# 表示をダブルクリックするかF10キーの押下により該当箇所へジャンプできます。
 ※このジャンプは当マクロの機能ではなくアウトプットバーの機能です<br>
 
※このジャンプは当マクロの機能ではなくアウトプットバーの機能です。


== 設定 ==
== 設定 ==
<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
outputbar.clear(); // 実行ごとにアウトプットバーをクリアします
outputBar.clear(); // 実行ごとにアウトプットバーをクリアします。
</syntaxhighlight>
</syntaxhighlight>


設定というよりもマクロの記述そのものですが、マクロの実行ごとにアウトプットバーをクリアするかどうかを決められます<br>
設定というよりもマクロの記述そのものですが、マクロの実行ごとにアウトプットバーをクリアするかどうかを決められます。
実行ごとにアウトプットバーをクリアしたくない場合は、行頭に"//"を記入してコメントアウトして下さい<br>
 
実行ごとにアウトプットバーをクリアしたくない場合は、行頭に"//"を記入してコメントアウトして下さい。


<syntaxhighlight lang="javascript">
<syntaxhighlight lang="javascript">
23行目: 24行目:
</syntaxhighlight>
</syntaxhighlight>


Yahoo! JAPANのアプリケーションIDの設定です<br>
Yahoo! JAPANのアプリケーションIDの設定です。
はじめから設定されているIDは私が個人的に取得したものです<br>
 
アプリケーションIDごとに1日あたり50000回の利用制限がありますので、もしも当マクロが大人気を博し、多くの人に利用されて上限を突破することがあれば利用できない時間が発生することになります<br>
はじめから設定されているIDは私が個人的に取得したものです。
おそらくそんなことにはならないだろうと思いますが<br>
 
アプリケーションIDごとに1日あたり50000回の利用制限がありますので、もしも当マクロが大人気を博し、多くの人に利用されて上限を突破することがあれば利用できない時間が発生することになります。
 
おそらくそんなことにはならないだろうと思いますが。
 
『Yahoo!デベロッパーネットワーク > ヘルプ > Client ID(アプリケーションID)とは』
 
https://support.yahoo-net.jp/PccDeveloper/s/article/H000006122
 
Yahoo! JAPAN IDを持っていれば、簡単にアプリケーションIDを取得することが出来ますので、気になる方は上記URLを参考にご自身のアプリケーションIDを取得し設定して下さい。


『Yahoo!デベロッパーネットワーク > ヘルプ > アプリケーションIDとは』<br>
== 注意事項 ==
https://www.yahoo-help.jp/app/answers/detail/p/537/a_id/43397
当マクロは外部ファイルどころかネットを介してYahooAPIにアクセスします、ネット環境がないと利用できません。


Yahoo IDを持っていれば、簡単にアプリケーションIDを取得することが出来ますので、気になる方は上記URLを参考にご自身のアプリケーションIDを取得し設定して下さい<br>
また、ネットに繋がるのがなんかヤダという方もいらっしゃるかと思います、申し訳ありませんがご使用を控えて頂ければと思います、予めご了承下さい。


== 注意点 ==
当マクロは校正箇所を表示しますが、実際の置き換えなどは行いません。
当マクロは外部ファイルどころかネットを介してYahooAPIにアクセスします、ネット環境がないと利用できません<br>
また、ネットに繋がるのがなんかヤダという方もいらっしゃるかと思います、申し訳ありませんがご使用を控えて頂ければと思います、予めご了承下さい<br>
当マクロは校正箇所を表示しますが、実際の置き換えなどは行いません<br>


== 謝辞 ==
== 謝辞 ==
当マクロは急急如律令さんの自動ルビ振りを大いに参考にしています。自動ルビ振りというお手本が無ければ当マクロは作成できませんでした。この場を借りてお礼申し上げます<br>
当マクロは急急如律令さんの[[自動ルビ振り]]を大いに参考にしています。自動ルビ振りというお手本が無ければ当マクロは作成できませんでした。この場を借りてお礼申し上げます。
 
== 変更履歴 ==
* 1.0.1 (2022-01-11)
** 弐版
* 1.0.0 (2019-05-01)
** 初版
 
== ソースコード ==
<syntaxhighlight lang="javascript" copy>
#title = "校正支援出力v2"
//------------------------------------------------------------------------------
// 設定
outputBar.Visible = "true";
outputBar.clear(); // 実行ごとにアウトプットバーをクリアします
var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-";
//------------------------------------------------------------------------------
// 参照
// 『Yahoo!デベロッパーネットワーク テキスト解析 校正支援(V2)』
// https://developer.yahoo.co.jp/webapi/jlp/kousei/v2/kousei.html
// 『自動ルビ振り』(急急如律令さん)
// https://www.haijin-boys.com/wiki/自動ルビ振り
// 『JScriptでHTTPアクセス』
// https://qiita.com/tnakagawa/items/3bce99d49b1aa3fc9a72
// 使用API
// https://developer.yahoo.co.jp/webapi/jlp/kousei/v2/kousei.html
//------------------------------------------------------------------------------
var sDate = new Date();
var API_URL = "https://jlp.yahooapis.jp/KouseiService/V2/kousei";
var activePos; // 位置退避用
var anchorPos; // 位置退避用
var sX; // 位置退避用
var sY; // 位置退避用
var offset = 0;
var Sentence = "";
var fPath = Document.FullName;
var cPos = "";


== 更新履歴 ==
StPos(); // 位置退避
・2022/01/11 弐版<br>
if (Document.Selection.IsEmpty) {
・2019/05/01 初版<br>
Sentence = Document.Text;
} else {
Sentence = Document.Selection.Text;
offset = Math.min(activePos, anchorPos);
}
var json = yahooapi(Appid, Sentence, API_URL);
var cnt = KouseiY(json);
LdPos(); // 位置復帰
Status = "■校正支援■ " + cnt + "箇所 (処理時間: " + ((new Date() - sDate) / 1000) + "秒)";
 
function yahooapi(Appid, Sentence, API_URL) { // Yahoo!APIにアクセスする
try {
var http = new ActiveXObject("Msxml2.XMLHTTP");
http.open("POST", API_URL, false); // 要求初期化
http.setRequestHeader("Content-Type", "application/json");
http.setRequestHeader('User-Agent', 'Yahoo AppID: ' + Appid);
var param_dic = {
"id": "1234-1",
"jsonrpc": "2.0",
"method": "jlp.kouseiservice.kousei",
"params": {
"q": Sentence
}
}
http.send(JSON.stringify(param_dic));
var x = http.responseText; // 応答を受け取る
} catch (e) {
outputBar.Writeln("※リクエスト失敗");
outputBar.Writeln("Error(" + (e.number & 0xFFFF) + "):" + e.message);
}
return x;
}
 
function KouseiY(json) { // 校正内容を整形
var str = "";
var json_parse = JSON.parse(json)
var results = JSON.parse(json).result.suggestions;
Redraw = false;
for (var i = 0; i < results.length; i++) {
cPos = PosToXY(Number(results[i].offset) + offset);
var line = fPath + cPos + "【" + results[i].rule + "】:" + results[i].word;
if (results[i].suggestion != "") line += "→" + results[i].suggestion;
if (results[i].note!="") line += "【" + results[i].note + "】";
outputBar.writeln(line);
}
Redraw = true;
return results.length;
}
function StPos() { // カーソル位置の保存
activePos = Document.Selection.GetActivePos();
anchorPos = Document.Selection.GetAnchorPos();
sX = ScrollX;
sY = ScrollY;
}
function LdPos() { // カーソル位置の復帰
Document.Selection.SetActivePos(activePos);
Document.Selection.SetAnchorPos(anchorPos);
ScrollX = sX;
ScrollY = sY;
}
function PosToXY(pos) { // ポジションを(y,x)形式の文字列にする
Document.Selection.SetActivePos(pos);
var x = Document.Selection.GetActivePointX(mePosLogical);
var y = Document.Selection.GetActivePointY(mePosLogical);
cPos = "(" + y + "," + x + ")";
return cPos;
}
</syntaxhighlight>

2025年11月25日 (火) 18:58時点における最新版

概要[編集]

Yahooの校正支援APIを利用して校正箇所を検索します。

検索結果をアウトプットバーに表示します。

使い方[編集]

  1. 校正したいテキストを開くか、テキスト内の校正したい部分を範囲選択します。
  2. 当マクロを実行すると、アウトプットバーに校正箇所がパス付きで表示されます。
  3. 表示をダブルクリックするかF10キーの押下により該当箇所へジャンプできます。

※このジャンプは当マクロの機能ではなくアウトプットバーの機能です。

設定[編集]

outputBar.clear();	// 実行ごとにアウトプットバーをクリアします。

設定というよりもマクロの記述そのものですが、マクロの実行ごとにアウトプットバーをクリアするかどうかを決められます。

実行ごとにアウトプットバーをクリアしたくない場合は、行頭に"//"を記入してコメントアウトして下さい。

var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-";

Yahoo! JAPANのアプリケーションIDの設定です。

はじめから設定されているIDは私が個人的に取得したものです。

アプリケーションIDごとに1日あたり50000回の利用制限がありますので、もしも当マクロが大人気を博し、多くの人に利用されて上限を突破することがあれば利用できない時間が発生することになります。

おそらくそんなことにはならないだろうと思いますが。

『Yahoo!デベロッパーネットワーク > ヘルプ > Client ID(アプリケーションID)とは』

https://support.yahoo-net.jp/PccDeveloper/s/article/H000006122

Yahoo! JAPAN IDを持っていれば、簡単にアプリケーションIDを取得することが出来ますので、気になる方は上記URLを参考にご自身のアプリケーションIDを取得し設定して下さい。

注意事項[編集]

当マクロは外部ファイルどころかネットを介してYahooAPIにアクセスします、ネット環境がないと利用できません。

また、ネットに繋がるのがなんかヤダという方もいらっしゃるかと思います、申し訳ありませんがご使用を控えて頂ければと思います、予めご了承下さい。

当マクロは校正箇所を表示しますが、実際の置き換えなどは行いません。

謝辞[編集]

当マクロは急急如律令さんの自動ルビ振りを大いに参考にしています。自動ルビ振りというお手本が無ければ当マクロは作成できませんでした。この場を借りてお礼申し上げます。

変更履歴[編集]

  • 1.0.1 (2022-01-11)
    • 弐版
  • 1.0.0 (2019-05-01)
    • 初版

ソースコード[編集]

#title = "校正支援出力v2"
//------------------------------------------------------------------------------
// 設定
outputBar.Visible = "true";
outputBar.clear();	// 実行ごとにアウトプットバーをクリアします
var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-";
//------------------------------------------------------------------------------
// 参照
// 『Yahoo!デベロッパーネットワーク テキスト解析 校正支援(V2)』
// https://developer.yahoo.co.jp/webapi/jlp/kousei/v2/kousei.html
// 『自動ルビ振り』(急急如律令さん)
// https://www.haijin-boys.com/wiki/自動ルビ振り
// 『JScriptでHTTPアクセス』
// https://qiita.com/tnakagawa/items/3bce99d49b1aa3fc9a72
// 使用API
// https://developer.yahoo.co.jp/webapi/jlp/kousei/v2/kousei.html
//------------------------------------------------------------------------------
var sDate = new Date();
var API_URL = "https://jlp.yahooapis.jp/KouseiService/V2/kousei";
var activePos;	// 位置退避用
var anchorPos;	// 位置退避用
var sX;	// 位置退避用
var sY;	// 位置退避用
var offset = 0;
var Sentence = "";
var fPath = Document.FullName;
var cPos = "";

StPos();	// 位置退避
if (Document.Selection.IsEmpty) {
	Sentence = Document.Text;
} else {
	Sentence = Document.Selection.Text;
	offset = Math.min(activePos, anchorPos);
}
var json = yahooapi(Appid, Sentence, API_URL);
var cnt = KouseiY(json);
LdPos();	// 位置復帰
Status = "■校正支援■ " + cnt + "箇所 (処理時間: " + ((new Date() - sDate) / 1000) + "秒)";

function yahooapi(Appid, Sentence, API_URL) {	// Yahoo!APIにアクセスする
	try {
		var http = new ActiveXObject("Msxml2.XMLHTTP");
		http.open("POST", API_URL, false);	// 要求初期化
		http.setRequestHeader("Content-Type", "application/json");
		http.setRequestHeader('User-Agent', 'Yahoo AppID: ' + Appid);
		var param_dic = {
			"id": "1234-1",
			"jsonrpc": "2.0",
			"method": "jlp.kouseiservice.kousei",
			"params": {
				"q": Sentence
			}
		}
		http.send(JSON.stringify(param_dic));
		var x = http.responseText;			// 応答を受け取る
	} catch (e) {
		outputBar.Writeln("※リクエスト失敗");
		outputBar.Writeln("Error(" + (e.number & 0xFFFF) + "):" + e.message);
	}
	return x;
}

function KouseiY(json) {	// 校正内容を整形
	var str = "";
	var json_parse = JSON.parse(json)
	var results = JSON.parse(json).result.suggestions;
	Redraw = false;
	for (var i = 0; i < results.length; i++) {
		cPos = PosToXY(Number(results[i].offset) + offset);
		var line = fPath + cPos + "【" + results[i].rule + "】:" + results[i].word;
		if (results[i].suggestion != "") line += "→" + results[i].suggestion;
		if (results[i].note!="") line += "【" + results[i].note + "】";
		outputBar.writeln(line);
	}
	Redraw = true;
	return results.length;
}
function StPos() {	// カーソル位置の保存
	activePos = Document.Selection.GetActivePos();
	anchorPos = Document.Selection.GetAnchorPos();
	sX = ScrollX;
	sY = ScrollY;
}
function LdPos() {	// カーソル位置の復帰
	Document.Selection.SetActivePos(activePos);
	Document.Selection.SetAnchorPos(anchorPos);
	ScrollX = sX;
	ScrollY = sY;
}
function PosToXY(pos) {	// ポジションを(y,x)形式の文字列にする
	Document.Selection.SetActivePos(pos);
	var x = Document.Selection.GetActivePointX(mePosLogical);
	var y = Document.Selection.GetActivePointY(mePosLogical);
	cPos = "(" + y + "," + x + ")";
	return cPos;
}
スポンサーリンク