py2app バンドルされた Python 2.7 アプリケーションで appscript と aemreceive を使用して、着信 Apple Events を受け入れ、アプリと通信する外部アプリケーションに Apple Events としてアプリの出力を返します。
これは非常にうまく機能しますが、例外が 1 つあります。辞書を返すとき、これらの文字のないキーが必要な場合に、キーがパイプ文字で囲まれます。
例: この応答を外部アプリに送信したい場所:
{has description:true, folder:file "travellerHD:Users:andre:Desktop:MyNewFile"}
代わりに、私のアプリはこれを送信します:
{|has description|:true, |folder|:file "travellerHD:Users:andre:Desktop:MyNewFile"}
イベント ハンドラーは、次のコードを使用してインストールされています。
aemreceive.installeventhandler(get_property, "coregetd",
('----', 'request_string',
aemreceive.kae.typeAERecord),
)
ここで、「get_property」は、外部アプリがアイテムの位置情報を要求すると呼び出される関数の名前です。この関数は辞書を返します。
return {'has description': asset.has_description,
'folder': mactypes.File(asset.folder)}
アプリのキーとして「folder」などの Apple Events の予約語を使用する場合、またはキーにスペースや非 ASCII 文字を使用する場合は、キーをパイプで囲む必要があることを知りました。したがって、「has description」からスペースを削除するか、「folder」キーの名前を「myfolder」に変更すると、アプリはキーをパイプで囲むことなく辞書を返します。
ただし、アプリと通信する外部アプリでは、アプリが「フォルダー」キーだけでなく、空白のキーを使用する必要があります。
何か案は?
よろしくお願いします。