InDesignスクリプトアイコン

色々なシーンでその場にあったペーストをするスクリプト「ナイスペースト.jsx」がMacintoshにも対応!その名も「ナイスペースト-Hybrid.jsx」

ょっと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の人も… ★★★★★

スポンサーリンク

スポンサーリンク

色々なシーンでその場にあったペーストをするスクリプト「ナイスペースト.jsx」がMacintoshにも対応!その名も「ナイスペースト-Hybrid.jsx」」への5件のフィードバック

  1. 当方、Mac OS 10.10、InDesign CS6で動きませんでした。
    リンクにエラー画像を添付します。

    それと、OSを調べるのであれば$.osで期待するものが得られると思うのですが?

    1. エラー報告ありがとうございます。

      そうですか動きませんか、何ででしょうね?
      今週末、会社のマック間借りして修正したいと思います。
      もうしばらくお待ちになってください。

      「$.os」期待通りの動きですね!ありがとうございます。
      $シリーズあんまり知らなくて、、、無知でした。

      1. 検証しました。

        開発環境 Mac OS 10.5.8 InDesign CS4ならOK

        テスト環境 Mac OS 10.11.6 InDesign CS6 CC は
        ご指摘の通り動きませんでした、、、申し訳ない。

        InDesignのバージョンかOSのバージョンか、分からないのがツラい。
        引き続き修正しますので、暫くお待ちを。

        しかし、「ナイスペースト」ハードル上がりまくってますが、
        ご期待に沿える機能かどうか?

  2. ご返信ありがとうございました。
    当方でも検証してみましたが、108行目の
    var myAppleScript=”return (the clipboard) as text”

    var myAppleScript=”get the clipboard”;
    としたところ、動作しました。

    それと、InDesignバージョンの検証という点でいえば、簡易的には
    app.scriptPreferences.version
    で指定することで確認することもできるかと思います。
    (仮にCS6であればapp.scriptPreferences.version=8.0です)

    実は僕自身も似たようなものを作ろうとしていました。
    ですが、こちらで拝見し、せっかくだから勉強がてら
    リライトしてみようと思ったところ…というわけです。
    こちらには勉強になりそうなスクリプトがたくさんあるので、
    引き続き(僭越ながら)応援させていただきます〜。

    1. var myAppleScript=”get the clipboard”;
      で完璧に動作しました。おぉ、スゴい!
      近々、ブログ記事訂正させて頂きます。

      今日もいろいろと試したトコロ
      var myAppleScript=”the clipboard as text”
      でも動作しました。
      「()」で括るらへんが怪しげです?

      app.scriptPreferences.version
      でバージョン指定できるんですか、それも知らなかったです。
      ナルホド、勉強になる…。

      僭越な応援ありがとうございます。
      見苦しいソースコードですがお役に立てるなら幸いです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です