web-dev-qa-db-ja.com

複数のファイルをDropboxフォルダーに移動するAlfredワークフロー

私はAppleScriptにとても慣れていません。ローカルコンピューターからDropboxフォルダーにファイルを頻繁に共有しています。

例えば:

From: ~/Work/hello.txt
To: ~/Dropbox/zzz_ShareMe/hello.txt

cp ~/Work/hello.txt ~/Dropbox/zzz_ShareMe/ # or, just copy files from Finder

私はAppleScriptについてグーグルで検索し、1つのアイテムのみをコピーするワークフローを思いつきましたが、複数のファイルを選択して、割り当てられたホットキー(ctrl-alt-d)を使用してDropboxにコピーするにはどうすればよいですか?

Run NSAppleScriptの内容を以下に示します。

# Note: we should have ~/Dropbox/zzz_ShareMe folder
#
on alfred_script(q)
tell application "Finder"
    set source to (POSIX path of (the selection as alias))
    do Shell script "cp -r" & space & quoted form of POSIX path of source & space & "~/Dropbox/zzz_ShareMe"

end tell
end alfred_script

私は予備を共有しました ワークフローはこちら

このワークフローは、単一のファイルに対して機能します。 Finderでファイルを選択すると、ctrl-alt-dはファイルを~/Dropbox/zzz_ShareMe/にコピーしますが、複数のファイルを選択してそのホットキーを使用すると、何もコピーされません

どうすればその問題を解決できますか。

助けていただければ幸いです。

関連リンク:

http://www.packal.org/workflow/move
http://www.packal.org/workflow/copymove
https://www.alfredforum.com/topic/4195-move-selected-Finder-item/

Update別のスクリプトを試しましたが、それでも失敗します。

必要なタスク:

  1. finderで複数のファイルを選択します
  2. ctrl-alt-d
  3. すべてのファイルを~/Dropbox/zzz_ShareMe/にコピーする必要があります。

新しいスクリプトを以下に示します。

on alfred_script(q) 

tell application "Finder"

set source to selection

end tell

if (count of source) is greater than 1 then

set fileList to every item of source

repeat with source in fileList

doMove(source, q)

end repeat

else

doMove(source, q)

end if

end alfred_script

on doMove(source, destination)

set source to (POSIX path of (the source as alias))

set destination to "~/Dropbox/zzz_ShareMe"


do Shell script "cp -r" & space & quoted form of POSIX path of source & space & POSIX path of destination

end doMove
4
astro123

理想的には、この質問を Alfred Forum に投稿する必要があります。しかし、あなたの問題は非常に単純なものなので、ここで手を貸していただければ幸いです。

基本的に、単一ファイルワークフロー用のAppleScriptは、変数sourceが単項データ型(単一値)であるaliasに強制変換されるため、本質的に単一ファイルの処理に自己制限します。 。 _alias list_というクラスがあり、その名前が示すように、エイリアスのリストに適しています。

また、AppleScriptとBashスクリプトを混在させました。これは、他の状況で非常に役立つ可能性がありますが、そうする理由がないため、ここでは少し奇妙です。そこで、AppleScriptとBashの別々のソリューションを紹介します。

ワークフロー

次のホットキートリガーに接続されたスクリプトの実行 not 実行NSAppleScript)アクション(これら2つのアクションの詳細については、 Alfredヘルプページ を参照してください。ただし、一般的には、Run NSAppleScriptアクションを使用する必要はありません) :

Alfred Workflow

ホットキートリガーをダブルクリックして設定します。最初のタブ(ホットキー設定)では、目的のホットキーを設定する方法を知っていると思います。ただし、引数フィールドを macOS での選択にも設定します。

2番目のタブ(関連アプリ)では、 Finder にフォーカスがある場合にのみ動作するように、ホットキーのアクションを制限できます。これを行うには、 Finder のアプリアイコンをリストボックスにドラッグします(最も簡単な方法は、 Alfred の検索フィールドをトリガーして入力することです "Finder" 、アイコンをここからそこにドラッグします)。

設定を保存します。

スクリプト

スクリプトの実行アクションをダブルクリックして、エディターペインを表示します。最初のドロップダウンリストで目的の言語を選択できます。この質問の目的で関心のある2つは _/bin/bash_ =(または同等のリストエントリ)および/usr/bin/osascript (AS)(または同等)。

osascriptは、AppleScriptをコンパイルして実行するエンジンです。

ASはAppleScriptを指します。 JSはJavaScriptを指します。

Bash

Bashを使用することを選択した場合は、入力をargvとしてを選択します。編集フィールドに表示されるサンプルコードをすべて削除し、次のコードを入力します。

_cp "$@" ~/Dropbox/zzz_ShareMe
_

AppleScript

AppleScriptを選択した場合、ここでは入力タイプは重要ではありません。編集フィールドに表示されるサンプルコードをすべて削除し、次のコードを入力します。

_tell application "Finder" to reveal ¬
    (duplicate (selection as alias list) ¬
    to folder "zzz_ShareMe" ¬
    of folder "Dropbox" ¬
    of home)
_
2
CJK