今回はキーワードを指定して該当する行を取得するレシピを作ってみます.
それに伴い2つ目のレシピでは処理にかかったおおよその時間も測ってみます.
※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.
レビュー時のバージョン : v4.0.1
スポンサーリンク
レシピ
2パターンのキーワード検索
キーワード検索では行ごとに処理を行うため, ショートカットでは「繰り返す」と「各項目で繰り返す」のどちらも使えます.
折角なので両方やってみましょう.
まず必要なものを揃えておきます.
最初に「テキスト」アクションで検索する対象データを適当に書き込んでおきます.
いづれ応用するときはここが色々変わることとなります.
改行がされていてもショートカット内では分割扱いはされていないので「テキストを分割」アクションで改行で必ず分割しておきます.
行ごとに処理を行うため「カウント」アクションで行数lineを取得しておきます.
検索ワードを入力するための「入力を要求」wordを追加し, 「繰り返す」アクションで使用するための内部変数(初期値1)nも設定しておきます.
続いて繰り返し処理, 「繰り返す」アクションから紹介していきます.
繰り返し回数は取得したテキストの行数lineですね.
n行目の項目に対してキーワードであるwordが一致するかどうかを判断します.
対象の値が含まれていればvalue1と名付けた変数に追加していきます.
「繰り返す」アクションは指定した繰り返し回数処理すること以外は何もしないため, 内部処理のための行数nを更新するために「繰り返しの修了」直前で必ず1足しておきます.
続いて「各項目を繰り返す」アクションの方です.
(画像ではミスってますが繰り返し数は上記と同じlineです)
「各項目を繰り返す」アクションでは先日の通り「繰り返し項目」という変数があるため先程よりも使い勝手が良いですね.
キーワードが一致する行を見つけるために「一致するテキスト」とif文を使うのは先程と同じです.
あとは実行して結果が正しいことを確かめます.
処理時間付きキーワード検索
続いては処理時間機能も付けたキーワード検索です.
ついでに共有から行うようにしてみます.
キーワードを入力するための「入力を要求」は今度は共有からの指定入力に変わります.
処理時間の開始時間は計算したい場所を選び, その時点での「現在の日付」とします.
例えば「入力を要求」の前に置いても意味がないですからね.
その後ろは先程と同じです.
メインである繰り返しの中身は先程紹介した2通りのどちらでも構いません.
開始時間同様, 修了時間としたい場所に改めて別の「日付」アクションを配置し, 「日付間の時間を取得」で最小単位である秒にしておきます.
実際に試してみましょう.
折角なのでiPhone内の解析ログのページから欲しい行を見つけることにします.
上記記事を参考に設定アプリから解析ログを開き, 全体を選択, 「共有」から今回作ったショートカットを選択します.
ショートカットアプリに戻ってキーワード入力を求められます.
希望の該当行がちゃんと表示されました(実際はこの一つ下の行が欲しいわけですが).
それにしても1333Secってかなりかかってますね, 20分をゆうに超えています.
日によって異なりますがlog-aggregated-xxxの中身は8,000~9,000行程度あります, 単純計算で1行に約0.148秒もかかっていることになります.
まあショートカットアプリって, 余計なアニメーションが明らかに動作に支障をきたしてると思うんですよね, 設定でオフにできるとかして欲しいです.
計測時間がおかしいとき
ショートカットとしてリリースされてまもなく指摘されていたのですが, 本アプリでは時間(というより日付)に関するバグが存在しています.
そのままだと条件に応じて異なる時間を返すため, 回避策として日付のフォーマットを変更する必要があります.
「日付間の時間を取得」内で指定した日付をタップし, 「入手」下にある「日付フォーマット」をタップして「カスタム」を選択します.
その後「カスタムフォーマット」の中身をタップします.
ポップアップが表示されるので, 入力枠にある文字列を
yyyy.MM.dd HH:mm:ss
に変更します(ドットは半角スラッシュでも良いです).
これで異常な値を返すことはないと思われます.
〆
紹介したレシピで分かる通り, ショートカットでのキーワード検索自体は問題なくこなしてくれます.
ただ行数が増えると標準のメモアプリを使った方がいいですね.
繰り返し処理をする前に, 行数が一定数以上の場合はメモ帳などに送ってそちらで行う…といった対処があったほうが良さそうです.