前回のやりなおし機能を使った応用例です.
エクスプローラーにもあるような、指定フォルダ内のファイルをキーワード検索し、ついでにプレビューもしくは簡単な詳細を閲覧できます.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のiOSバージョン : iOS15.1
スポンサーリンク
ダウンロードと使い方
キーワードを入力して「完了」をタップすることで、キーワードを含むファイルを"Shortcuts"フォルダ内から検索します(それなりに時間がかかります).
テキスト、ミュージック、動画といったメジャーなファイルであれば「プレビュー」で閲覧できます.
参照後に「参照しなおす」を選択することで選んだファイルのプレビュー・詳細の選択に戻ります.
詳細の内容は現在以下をサポートしています.
- 保存場所
- ファイルサイズ
- 作成日
- 最終更新日
レシピ
簡単にですがレシピの中身を解説します.
最初にあるアクションは「ショートカットの入力」を扱うと勝手に出てくるものです.
デフォルトのまま弄っていません.
ちょくちょく説明していますが「ショートカットの入力」の特徴として以下があります
- 実行時は空
- 「ショートカットを実行」アクションの入力が、実行されるレシピの「ショートカットの入力」として渡される
これを利用し、自分自身を「ショートカットを実行」で呼び出す際に欲しいデータを渡したり、逆にわざと空の状態で渡すことで、データの引き継ぎやクリアを行うことが可能となります.
後述しますが今回はファイルパスがその対象となります.
まず「ショートカットの入力」の有無によってifで場合分けします.
「ショートカットの入力」が「値がない」を満たすのは以下の2種類です
- 最初に実行したとき
- 空のデータを入力としてループしたとき
この場合はどちらもキーワードで検索することから始まるため「入力を要求」でキーワードを入力させ、続いて「フォルダの内容を取得」で"Shortcuts"フォルダ内の中身を取得します、ここでオプションの「再帰的」をオンにすることで下のフォルダも対象となるようにします.
本当はiCloud Driveを対象にしたり、フォルダを好きに指定できるようにしたかったのですが断念しました.
続いて上で得たフォルダの内容のうち、同じく入力させたキーワードを含むものをフィルタします.
ただし「ファイルにフィルタを適用」アクションでは大文字小文字を強制的に区別してしまうため、代用としてフォルダの内容を対象として「各項目を繰り返す」を実行し、「テキストの一致」のパターンを
.*指定入力.*
とします(iOS15.2で「ファイルにフィルタを適用」の大文字小文字の区別が改善するという噂もあります).
もちろんオプションの「大文字/小文字を区別」のスイッチはオフにします.
一致するもの対して、ファイルパスと拡張子を繋げたものを変数に追加していきます.
これがキーワード検索にヒットしたファイルパスの列となります.
上でキーワード検索にヒットしたファイルパスを取得できたので、「リストから選択」でその中から一つ選び、これを変数pathで置きます.
この変数pathは最初に書いた通り引き継ぎデータとして次に実行する際の入力として渡すものとなります.
その他の場合というのは今回は「ショートカットの入力」が存在するということです.
今回の場合は何らかの形で「ショートカットの入力」に変数pathの値、つまりファイルパスが与えられているということなので、これを改めて変数pathで置きます.
これで「ショートカットの入力」が存在するかしないかに関わらずファイルパスpathが与えられたことになります.
今回は諸事情あってShortcutsフォルダ内のファイルが対象です.
ファイルパスは
iCloud Drive/Shortcuts/hoge~
となっており、ファイルを取得するための「フォルダからファイルを取得」アクションではこのうちhoge~の部分が必要です.
そのため「テキストを分割」と「リストから項目を取得」を使ってここだけ取り出したものを変数fileで置きます.
(「テキストを置き換え」で先頭を消した方がよかったですね)
これでファイルを取得するのにフォルダはデフォルトである「ショートカット」を、パスに変数fileを使えばよいです.
選択したファイルのパスfileが分かったのでこれと「メニュー」アクションを使ってプレビューや詳細の閲覧を行います.
プレビューの場合は、「フォルダからファイルを取得」アクションを使います
(相対)パスは上で得た変数fileです.
表示するのに「結果を表示」がいいか「クイックルック」がいいかは迷うところですね.
ファイルによってはエラーになりますが仕方ありません.
詳細の場合はファイルを取得したのち「テキスト」アクションにファイルパスやファイルサイズなど、とりあえずショートカットで取得できる情報を書き連ね、表示させます.
以上が終わったら繰り返し・終了の処理に移行します.
まず同じファイルパスを使い回す場合.
このときは引き継ぎデータである変数pathを再び変数名pathでおくことで上書きします.
ただし今回は加工しただけで上書きしていないため、このアクション(赤枠)は不要です.
続いて別のファイルを検索する場合.
つまり引き継ぎデータを空にする必要があるので変数pathを空の状態(灰色で「入力」とある状態)で「変数を設定」で上書きします.
最後に「終了」.
これは「ショートカットの実行を停止」アクションになります.
最後に「ショートカットを実行」で自分自身を呼ぶ出すことでループさせます.
ここでオプションにある「入力」に忘れずに変数pathを入れておきます.
〆
本当は好きなフォルダを指定するようにしたかったんですが、うまくいかず断念しました.
「ファイル」の指定は
- 予め選択しておく
- 毎回尋ねる
の2通りありますが、1は当然固定となってしまうためそのときどきで変更したい場合はレシピの中を変更する必要があります.
2については現在のレシピの仕様だとループするたびに必ず要求されてしまいます.
かといってフォルダの指定はテキストベースの変数は通らないようで、そのため「辞書」アクションを使って引き継ぎデータに加えてフォルダも渡すことができません.
結果、無難な"Shortcuts"フォルダで固定することになったわけです.
しかし「フォルダ」アクションにしても「フォルダからファイルを取得」アクションにしても、フォルダ部分にマジック変数を代入することができるわけですから、何らかの形で固定でない変数を当てることができるはずなのは間違いありません.
その方法がわかればより汎用性のある検索レシピになります.
ショートカットアプリはAppleが提供するユーザーガイドだけではわからないことが多く、加えてアップデートのたびに仕様が変わったりバグが乱発したり…という状況なので、目の前にあるのに使い方がわからない…というのが他のプログラム言語の比ではありません.
各アクションの説明ももっと詳しく書いて欲しいですね…例えば「計算式」アクションで使える関数や定数も自分が知るものですべてなのかもわかりません.
そのせいかはわかりませんがキーワード検索上位で出てくるショートカット関連の記事やYoutubeの動画は使い古されたレシピばかりで何の新しさもありません.
「ショートカットキー」「ショートカットアイコン」とも被る致命的なネーミングミスも合わさってショートカットのキーワード検索は最悪です.
良いアプリなだけに非常に勿体ないです.