【iPhoneショートカット】入力処理のテンプレと入力のチェック&加工 [Tips]
ショートカットが実行される状況によって、処理するデータをどこから入力させるかというのを変えたい場合がある。
例えば、
・共有シートから実行したならその時選択しているテキストや画像を入力として使う
・普通に実行した場合でクリップボードに値があるならその値を、ないならユーザに入力を促してその値を入力として使う
といった具合に。
また、入力された値が正しいものなのか判断したい場合もある。例えば整数値をカンマ区切りで入力して欲しいところに "Hello" などと間違った値が入力された時はエラーを出してショートカットを終了させるなど。
そして、作成するショートカットによっては入力をただ取得するだけでなく、加工する必要が生じることもある。例えば文字数を数えるショートカットを作る場合、改行や空白などの文字を除いたものから数えたい場合には、入力からそれらを取り除く処理を書く必要がある。
このような、
・入力を受け取って
・それをチェックして
・加工して
・処理して結果を得る
という一連の流れはわりと多くのショートカットに見られる共通のもののはず。
そこで本記事では、
・データの受け取り方
・チェックの仕方
・加工の仕方
の3点について、ある程度汎用的に使えるであろうテクニック(ショートカットレシピ)についてまとめる。
また、記事の後半ではそれらのテクニックを組み合わせて作った実際に使えるショートカットのレシピも載せる。(具体例があるといいかなあ、と)
前書きが長くなりましたが、以下目次。
1. 入力を用意する
繰り返しになるが、ショートカットを実行する状況によって「データをどこから入力するか」というのを変えたい場合がある。例えば、
・「ショートカットを実行」アクションで外から入力を渡されて実行された場合はそれを入力として使う
・共有シートから実行したならその時選択しているテキストや画像を入力として使う
・普通に実行した場合でクリップボードに値があるならその値を、ないならユーザに入力を促してその値を入力として使う
といった具合に。
これを行うには、作成するショートカットのレシピ冒頭に以下のような処理を記述する。if文を繋げていくだけ。
inputRoutine
変数inputに入力がセットされるので、あとはそれを使って処理するだけ。
一度作っておいて、ショートカットを複製して使いまわすといった使い方がいいと思う。
また、クリップボードの値は使いたくないといった場合には2番目のif文を消して使うようにする。
2. 入力をチェックする
「一致するテキスト」アクションとif文を組み合わせることで正規表現を使った入力のチェックができる。
例えば入力が「カンマ(,)で区切られた2つの整数値」になっているかどうかを調べたいならば、以下のようにする。入力が間違っているときは「一致するテキスト」アクションの出力(マジック変数 "一致")が空になるはずなので、それをif文で調べて「アラート」アクションを使って警告を出すようにしている。
check
正規表現(コピペ用)
^(0|[+-]?[1-9]\d*),(0|[+-]?[1-9]\d*)$
3. 入力を加工する
入力の加工には「テキストを置き換え」アクションが使える。例えば連続した空行を一つの空行に置換したい場合は以下のようにする。
replace
※ 真ん中の「テキスト」アクションには改行を2つ入力する
4. 具体例
前述したテクニックを使った実際のレシピ例を以下にのせる。
文字数カウント
DeepL翻訳
URL(コピペ用)
https://www.deepl.com/translator#auto/auto/
カンマ区切りの整数を合計
正規表現(コピペ用)
^(0|[+-]?[1-9]\d*)(,(0|[+-]?[1-9]\d*))+$
上の例のショートカット達は、共有シートから実行する他に、「ショートカットを実行」アクションを使って実行させることもできる。例えばWebページの記事を取得してそれを入力として「DeepL翻訳」ショートカットに流し込めば、記事をDeepL翻訳するショートカットが出来る。
また、組み立てた(使った)URLを返すようにして、それをどこかに(メモならファイルなりに)保存しておけば翻訳履歴をつけたりすることも可能なはず。過去の翻訳を簡単に振り返ったりということもできるようになる。
5. まとめ
以下の流れを意識するとわりとサクっと色々なショートカットが作れる。(ような気がしている)
・入力を受け取って
・それをチェックして
・加工して
・処理して結果を得る
ショートカットよっては入力を加工してからチェックすることもある。例えば例で挙げたショートカットsumは、入力から空白文字(\s)を除去した後でチェックを行なっている。これは入力を寛容に行うためにそうしている。こうすると、"12, 13" のようなものも受け取れるようになる。
もっと機能を付けるにしても上の処理の流れは崩れない(崩してはいけない)はず。
では今回はこの辺で。