web-dev-qa-db-ja.com

ドラッグアンドドロップを使用せずにMail.appメッセージへのリンクをコピーするにはどうすればよいですか?

私は日記をつけており、メールメッセージへのリンクが好きです。私のメールクライアントはOSXのMail.appです。ジャーナルプログラム(VoodooPad)へのリンクをドラッグアンドドロップできますが、実際にはそれらをコピーして貼り付けたいので、message://%3C30533360.1931252053580.bla.bla.blaのようなリンクがあります。

Mail.appからこの形式のリンクを取得する簡単な方法はありますか?

8
Lorin Hochstein

Splattneの応答と、これに基づいて macosxhints entry、 私はそれを行う方法を考え出しました。さて、FastScriptsのQuicksilverのようなものを使用して、キーボードショートカットにバインドするだけです。

tell application "Mail"
  set selectedMessages to selection
  set theMessage to item 1 of selectedMessages  
  set messageid to message id of theMessage
    -- Make URL (must use URL-encoded values for "<" and ">")
  set urlText to "message://" & "%3c" & messageid & "%3e"  
  set the clipboard to (urlText)     
end tell
9
Lorin Hochstein

私があなたの質問を正しく解釈した場合、これらのブログ投稿でAppleScriptのバリエーションを使用できます。

1
splattne

あなたがすでに自分自身に答えた質問への答えではなく、アーカイブのためだけに:

Webサイトまたは電子メールメッセージからファイルを保存した後、Finderで[情報を見る]を使用して ファイルの出所を見つける 。電子メールの添付ファイルの場合、これにはメッセージの送信者、件名、およびそのメッセージを参照するURLが表示されます。

Get Infoの代わりに、コマンドラインを使用して情報を取得することもできます。

mdls -name kMDItemWhereFroms <ファイル名>

このようなURLでopenコマンドを使用すると、テキストファイルのテキストエディットをアクティブにするのと同じように、OSXでデフォルトのアプリケーションがアクティブになります。 message: URLの場合、Mail.appが起動され、メッセージが表示されます(メッセージがまだ存在する場合)。

上記のリンクのコメントからいくつかのAppleScriptと組み合わせる:

on open these_items 
   set first_item to item 1 of these_items 
   set full_path to quoted form of POSIX path of first_item 

   set cmd to ¬ 
      "/usr/bin/mdls -name kMDItemWhereFroms " & ¬ 
      full_path & " | grep 'http:\\|https:\\|message:' | xargs open" 
   do Shell script cmd 
end open

上記のAppleScriptをスクリプトエディタに貼り付け、オプション実行のみを指定してアプリケーションとして保存します。これで、ファイルをそのアプリケーションにドラッグすると、該当する場合はソースが開きます。私は確かにAppleScriptの専門家ではなく、上記はエラー処理を行いません。複数のファイルがアプリケーションにドロップされたときに最初のファイルを取得するだけで、ディレクトリをサポートしていません。しかし、人はその考えを理解していると思います。

(上記のhttp:\\の円記号は意図的なものであり、//を読み取るべきではありません。スクリプトはhttp:https:、またはmessage:を検索します。言い換えると、それらはhttp://の一部となることを意図していませんが、grepコマンドのパイプ文字をエスケープするために、一緒にエスケープされた円記号を形成します。)

0
Arjan