「
校正支援アウトプット
」を編集中
ナビゲーションに移動
検索に移動
警告:
ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。
ログイン
または
アカウントを作成
すれば、あなたの編集はその利用者名とともに表示されるほか、さまざまなメリットもあります。
スパム攻撃防止用のチェックです。 決して、ここには、値の入力は
しない
でください!
== 概要 == Yahooの校正支援APIを利用して校正箇所を検索します。 検索結果をアウトプットバーに表示します。 == 使い方 == # 校正したいテキストを開くか、テキスト内の校正したい部分を範囲選択します。 # 当マクロを実行すると、アウトプットバーに校正箇所がパス付きで表示されます。 # 表示をダブルクリックするかF10キーの押下により該当箇所へジャンプできます。 ※このジャンプは当マクロの機能ではなくアウトプットバーの機能です。 == 設定 == <syntaxhighlight lang="javascript"> outputBar.clear(); // 実行ごとにアウトプットバーをクリアします。 </syntaxhighlight> 設定というよりもマクロの記述そのものですが、マクロの実行ごとにアウトプットバーをクリアするかどうかを決められます。 実行ごとにアウトプットバーをクリアしたくない場合は、行頭に"//"を記入してコメントアウトして下さい。 <syntaxhighlight lang="javascript"> var Appid = "dj00aiZpPVpmUHNGV3pQUTlkVyZzPWNvbnN1bWVyc2VjcmV0Jng9ODQ-"; </syntaxhighlight> 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) ** 初版 == ソースコード == <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(); // 位置退避 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; } </syntaxhighlight>
編集内容の要約:
MeryWikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細は
MeryWiki:著作権
を参照)。
著作権保護されている作品は、許諾なしに投稿しないでください!
このページを編集するには、下記の数式を計算してその答えを欄に入力してください (
ヘルプ
):
いちたすには =
キャンセル
編集ヘルプ
(新しいウィンドウで開きます)
スポンサーリンク
ナビゲーション メニュー
個人用ツール
ログインしていません
トーク
投稿記録
アカウント作成
ログイン
名前空間
ページ
議論
日本語
表示
閲覧
編集
履歴表示
その他
検索
スポンサーリンク
スポンサーリンク
案内
メインページ
ヘルプ
よくある質問
マクロリファレンス
マクロライブラリ
プラグインライブラリ
構文ファイル
テーマ
寄付・開発支援
練習用ページ
開発室
開発者のブログ
ツール
スポンサーリンク