3

StandardAdditions.sdef は、キー「as」を使用してクリップボードから特定のデータ型を取得できることを示します。

ここに画像の説明を入力

clipboardInfo() 関数は、Applescript のこれらのキーが何であるかを明らかにしますが、Yosemite JavaScript の場合はそれほど雄弁ではありません。(10.11は試していません)

ここに画像の説明を入力

「テキスト」と「文字列」は機能しているようですが、私が試した順列はありませんpublic.html public.rtf «class HTML » «class RTF » rtf html

ここで機能するキーを見つけた人はいますか (クリップボードに特定のコンテンツ タイプが存在すると仮定しますか?)

(その間、もちろん、JXA の実行可能な ObjC() の代替手段がいくつかあります。

ObjC.import('AppKit');

// Types: 'public.rtf', 'public.html' etc
function pboardUnpacked(strType) {
    return ObjC.unwrap(
        $.NSPasteboard.generalPasteboard.stringForType(
            strType
        )
    )
}

// Types: 'com.apple.webarchive' etc
function pboardPlist(strType) {
  return ObjC.deepUnwrap(
    $.NSPasteboard.generalPasteboard.propertyListForType(
      strType
    )
  )
}

しかし、より簡潔な StandardAdditions イディオムも手元に置いておくとよいでしょう ...

4

2 に答える 2

2

mklement0 が見つけた正しい答え (質問の最後のコメントを参照) は、JXA が Apple の Uniform Type Identifier 文字列を使用して、クリップボードに保持されているテキストのタイプを識別することです。

例えば:

(function() {

    ObjC.import('AppKit');

    return ObjC.deepUnwrap(
        $.NSPasteboard.generalPasteboard.pasteboardItems.js[0].types
    );

})(); 

// e.g. -->
    ["public.rtf", "public.utf8-plain-text", 
    "public.utf16-external-plain-text", "dyn.ah62d4rv4gk81n65yru",
    "com.apple.traditional-mac-plain-text", "dyn.ah62d4rv4gk81g7d3ru"]
于 2015-12-07T10:06:38.150 に答える