0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

indesignからYahooのAPIを叩く(win版)

Last updated at Posted at 2024-06-18

まえがき

Yahoo!デベロッパーネットワークが提供しているAPIが、indesign上でも動作するぞ!という噂を聞きました。

ですが、調べてみた限りネット上で紹介されている方法がMacのものばかりだったので、windowsで動作するよう関数を作成してみました。

Mac版のスクリプトとの違いはAppleScriptの代わりにVBSを利用するところのみなので、詳しい解説や使い方は他の方のブログや記事などを参考にしてください。

ざっくりとした処理の流れは、

  1. 変数に処理を書き込む
  2. doscriptメソッドでVBSを実行
  3. WinHttpからYahooAPIにPOSTリクエストを送る
  4. 結果を取得して返す

のような形です。

動作環境

・Indesign 18.064/17.064 で動作確認済み

サンプルコード

useApiTest.js
   function httpRequest(input) {
	var result = "";
	var myinput = input;
	var vbs = "";
	vbs += "Public s\r";
	vbs += 'Dim http: Set http = CreateObject("WinHttp.WinHttpRequest.5.1")\r';
	vbs += 'Dim url: url = "https://jlp.yahooapis.jp/FuriganaService/V2/furigana"\r';
	vbs +=
		'Dim data : data = "{ ""id"": ""1234-1"", ""jsonrpc"": ""2.0"", ""method"": ""jlp.furiganaservice.furigana"", ""params"": { ""q"": ""' +
		myinput +
		'"", ""grade"": ""1"" } }"\r';
	vbs += "With http\r";
	vbs += '.Open "POST", url, False\r';
	vbs += '.SetRequestHeader "Content-Type", "application/json"\r';
	vbs += '.SetRequestHeader "User-Agent" , "Yahoo AppID: あなたの取得したYahoo AppID"\r';
	vbs += ".Send data\r";
	vbs += "End With\r";
	vbs += "s = http.ResponseText\r";
	vbs += 'Set objInDesign = CreateObject("InDesign.Application")\r';
	vbs += 'objInDesign.ScriptArgs.SetValue "http_data", s\r';
	app.doScript(vbs, ScriptLanguage.VISUAL_BASIC, undefined, UndoModes.FAST_ENTIRE_SCRIPT);
	result = app.scriptArgs.getValue("http_data");
	app.scriptArgs.clear();
	return result;
}

alert(httpRequest("漢字混じりの文字列からふりがなを取得します。"));

Yahoo!デベロッパーネットワークでClient IDを取得してきて、上記コードのあなたの取得したYahoo AppIDの部分を置き換えるだけで動作すると思います。

あとはレスポンスを加工してよしなにしてください。

注意点

ESDebuggerでスクリプトを実行した際に「エンジンのxml が無効です」のメッセージが表示されたり、Indesign上で実行したときに何も結果が表示されないなど、うまく動作しないことがあります。

その場合は、以下の手順を実行して「Resources for Visual Basic.tlb」を再作成することでうまく動作するようになるかもしれません。

手順

  1. 次のディレクトリに移動する
    : C:\ProgramData\Adobe\InDesign\Version XX.X\xx_XX\Scripting Support\XX.X (または tlb ファイルが配置されている場所)
  2. ファイル「Resources for Visual Basic.tlb」を削除する
  3. Indesignを管理者権限で起動する

以上

参考サイト

APIドキュメント

諸々の仕様の参考にさせて頂いたサイト

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?