ちょっとMacintoshを触れる機会があったので、ちょっと頑張って「ナイスペースト.jsx」(詳しい使い方はコチラ)をMacintoshにも対応させてみました。クリップボード関連はjavascriptだけでは対応不可能なので、10年以上ぶりにAppleScriptのコーディングをしましたヨ。
JavaScriptからAppleScriptを呼び出す
普段はWindowsなのでクリップボードの取得はVBscriptでコーディングし、それを呼び出していました。なので、Mac版対応はAppleScriptを呼び出します。
var myAppleScript="return (the clipboard) as text" var ans=app.doScript(myAppleScript,ScriptLanguage.APPLESCRIPT_LANGUAGE)
こういう感じのコーディングですね。意外と簡単でしたね、実機があればすぐ出来た(泣)。これで、クリップボードの文字列を変数「ans」に代入できたのでこれでナイスペーストが自由自在です。
追記:上記のコードでは新しめのMacでは動作しないようデス
uske_sさんよりのコメントで下記コードを教えてもらい、解決いたしました。
var myAppleScript="get the clipboard" var ans=app.doScript(myAppleScript,ScriptLanguage.APPLESCRIPT_LANGUAGE)
uske_sさん、本当に有難うございました! サイト:「あどびのすくりぷと」ページにある、jsxも修正済みです(ついでに名前を「NicePasteHybrid.jsx」にしました)。
スポンサーリンク
OSの分岐どうする?問題
んん?OSを調べるJavaScriptコード無くね?みんなどうやって分岐させてんだろ?エクステンションならOS調べるコードあるんだけどなぁ。とりあえず、、、
if((new File(Folder.appData)).name[0]=="P"){
こうしました、使用インデザインの「アプリケーション」フォルダ名の1文字目が「P」ならWindows(「Program Files」フォルダ)、それ以外はMacintosh(「Application」フォルダ)という分岐にしました。
追記:上記のコードよりスマートな方法があるようです
uske_sさんよりのコメントで下記コードを教えてもらいました。
if($.os[0]=="W"){
uske_sさん、重ね重ね有難うございました! 「$.os」でナントOSが分かるのです!スゴイ! アプリケーションにより「Windows」だけでなくバージョンとかも付いてくるみたいです。なので1文字目判定で、、、。
ダウンロードはこちらから
Macに対応した「ナイスペースト-Hybrid.jsx」。ダウンロードは下記リンクから
→web site:shock tm 「あどびのすくりぷと」ページ
便利だと思う度 ★★★★☆
Macの人も… ★★★★★
—-2018/08/04 追記—-
【ナイスペーストHybrid+2.jsx】にパワーアップ
bullさんのリクエストにより新機能が追加されました!bullさんありがとう!そしておめでとう!
選択中文字列がそのままアンカーオブジェクトにイン!
上記のように文字ツールでアンカーオブジェクトと文字列を同時に選択し、【NicePasteHybrid+2.jsx】を実行!
すると、ワンアクションでアンカーオブジェクトに文字列をペーストできます!何という便利さ!恐るべし!
—-2019/07/18 追記—-
ちゃんと動いてないのでさらに修正
リクエストの新機能『選択中文字列がそのままアンカーオブジェクトにイン!』がちゃんと動いてなかった…。アンカーオブジェクトにはペーストされてるけど何故かカットするはずの文字が消えてない。
『doScript』で走らせてるからみたい…。メニューの実行はなんか違うのかしら?とりあえず修正しましたのでご安心下さい。
そんな便利な最新版【NicePasteHybrid+2.jsx】のダウンロードは下記リンクから
→web site:shock tm 「あどびのすくりぷと」ページ
スポンサーリンク
More from my site
スポンサーリンク
当方、Mac OS 10.10、InDesign CS6で動きませんでした。
リンクにエラー画像を添付します。
それと、OSを調べるのであれば$.osで期待するものが得られると思うのですが?
エラー報告ありがとうございます。
そうですか動きませんか、何ででしょうね?
今週末、会社のマック間借りして修正したいと思います。
もうしばらくお待ちになってください。
「$.os」期待通りの動きですね!ありがとうございます。
$シリーズあんまり知らなくて、、、無知でした。
検証しました。
開発環境 Mac OS 10.5.8 InDesign CS4ならOK
テスト環境 Mac OS 10.11.6 InDesign CS6 CC は
ご指摘の通り動きませんでした、、、申し訳ない。
InDesignのバージョンかOSのバージョンか、分からないのがツラい。
引き続き修正しますので、暫くお待ちを。
しかし、「ナイスペースト」ハードル上がりまくってますが、
ご期待に沿える機能かどうか?
ご返信ありがとうございました。
当方でも検証してみましたが、108行目の
var myAppleScript=”return (the clipboard) as text”
を
var myAppleScript=”get the clipboard”;
としたところ、動作しました。
それと、InDesignバージョンの検証という点でいえば、簡易的には
app.scriptPreferences.version
で指定することで確認することもできるかと思います。
(仮にCS6であればapp.scriptPreferences.version=8.0です)
実は僕自身も似たようなものを作ろうとしていました。
ですが、こちらで拝見し、せっかくだから勉強がてら
リライトしてみようと思ったところ…というわけです。
こちらには勉強になりそうなスクリプトがたくさんあるので、
引き続き(僭越ながら)応援させていただきます〜。
var myAppleScript=”get the clipboard”;
で完璧に動作しました。おぉ、スゴい!
近々、ブログ記事訂正させて頂きます。
今日もいろいろと試したトコロ
var myAppleScript=”the clipboard as text”
でも動作しました。
「()」で括るらへんが怪しげです?
app.scriptPreferences.version
でバージョン指定できるんですか、それも知らなかったです。
ナルホド、勉強になる…。
僭越な応援ありがとうございます。
見苦しいソースコードですがお役に立てるなら幸いです。
OS10.10 cc2015で使わせていただいております。
私はいつも他力本願的に素晴しいスクリプトを検索して使わせてばかりいただいているのですが、こちらのスクリプトをアンカーオブジェクトとテキストを選択してスクリプトかければアンカーオブジェクトにテキストをコピペさせるようにもできるのでしょうか?
もしよろしければお教えください。
アンカーオブジェクトとテキストを連続して選択し、
スクリプトをかけて、選択したテキスト部分をカットして
アンカーオブジェクトにペーストしたいってことですよね?
そういう風に書き換えれば、できるような気もします…。
同じ状況で上書きしなくなってしまう危険もありますが、
便利そうなので、ヒマがあればトライしてみます。
ヒマだったのでトライしました。
下記からダウンロードできます。
http://www.adodtp.com/jsx/NicePasteHybrid+.zip
問題なさそうなら正式発表します。
追加機能:
選択文字列1文字目がアンカーオブジェクトなら、
2文字目以降のテキストをアンカーオブジェクトに
属性を引き継ぎつつペーストする。
質問しておいて放置してしまい、すみません。
試させていただきました。
成功!と思ったのですが、同じ頁に2回目のスクリプトを実行すると実行箇所より上の文章が消えてしまう現象も発生しました。
あっホントですね。なんとか修正しました。
http://www.adodtp.com/jsx/NicePasteHybrid+2.zip
でお確かめください。
ありがとうございます。
完璧です!!
本当にありがとうございます。感謝いたします。
ありがとうございます。
できました、成功!!
本当にありがとうございました、感謝!!!
出来ました!!
ありがとうございました。感謝感激!!!!