後編 maxnoteスキャナー(全体メモをtxtに保存・文字数をカウント)
さて、前回話させていただいたmaxnote
最後の評価ポイントですが、
肝となるのは、インテントやテキストidが
どれだけ参照できるかです。
要するに、アプリの中のどれだけ
トリガーにしたり検知できたりする
情報があるかという話です。
本アプリにはメモ表示時のテキストidと
ウィジェットを開く際に検出されるlogcat
どちらも偶然備わっていたので
上手い具合にタスクを組む事ができました。
(7.0.2までしか動かないと勘違いしてましたが
最新版の7.1.3でも普通に動作の確認ができたので
問題なく動いてくれると思います)
さて、ということでタスク公開。
https://taskernet.com/shares/?user=AS35m8lAutcM2pg1C5CWy9o%2BqnbpUk9wP4lEsfFlAhEt2tmVqmQpId2zWmtOGl%2FgzXdzw%2FqYJRUE3GRH&id=Project%3AMaxnote
apkにもしてありますのでご活用ください。
https://www.dropbox.com/scl/fi/0m435hgk51z3ezl3gz65s
────────以下タスク─────────
Profiles
プロファイル: 無名
イベント: アプリが変更された [ 出力変数:* パッケージ:com.maxciv.maxnote ]
開始 タスク: 自動セーブ
設定: 既存タスクを破棄する
A1: 変数の消去 / Variable Clear [
名前: %Count ]
A2: 待機 / Wait [
ミリ秒: 80
秒: 0
分: 0
時間: 0
日: 0 ]
<restart>
A3: Get Screen Info (Assistant) [ ]
A4: 変数を設定 / Variable Set [
名前: %Text
これに: %ai_texts
構造を出力 (JSONなど): オン ]
A5: 変数を分割 / Variable Split [
名前: %Text
区切り文字: , ]
A6: 変数に足す / Variable Add [
名前: %Count
値: 1
巻き戻る: 0 ]
A7: 転移 / Goto [
種類: アクション番号
電話番号: 13
ラベル: restart ]
If 条件開始 [ %Count > 10 ]
A8: If 条件開始 [ %Text1 !~R \Q"text":"…"\E & %Text2 !~R \Q"text":"…"\E & %Text3 !~R \Q"text":"…"\E & %Text5 !~R \Q"text":"…"\E & %Text6 !~R \Q"text":"…"\E & %Text1 !~R \Q"text":"アイテムを追加"\E & %Text2 !~R \Q"text":"アイテムを追加"\E & %Text1 !~R \%ai_texts ]
A9: 転移 / Goto [
種類: アクション番号
電話番号: 13
ラベル: restart ]
A10: Else
A11: 転移 / Goto [
種類: アクションラベル
ラベル: restart ]
A12: End If 条件終了
A13: 変数内を検索や置換 / Variable Search Replace [
変数: %Text
検索 / Search: \{
一致を置換する: オン ]
A14: 変数内を検索や置換 / Variable Search Replace [
変数: %Text
検索 / Search: \}
一致を置換する: オン ]
A15: 変数内を検索や置換 / Variable Search Replace [
変数: %Text
検索 / Search: \[
一致を置換する: オン ]
A16: 変数内を検索や置換 / Variable Search Replace [
変数: %Text
検索 / Search: \]
一致を置換する: オン ]
A17: 変数を設定 / Variable Set [
名前: %Kaigyou
これに:
構造を出力 (JSONなど): オン ]
A18: 変数内を検索や置換 / Variable Search Replace [
変数: %Text
検索 / Search: \Q\n\E
一致を置換する: オン
置換先: %Kaigyou ]
A19: 変数を設定 / Variable Set [
名前: %Saved
これに: %TIME
ーーーーーーー
%Text
構造を出力 (JSONなど): オン ]
A20: 変数を分割 / Variable Split [
名前: %TIME
区切り文字: . ]
A21: 変数の調査 / Test Variable [
種類: 長さ
データ: %Text
結果の保存先: %Mojisuu ]
A22: If 条件開始 [ %Text1 !~R \Q"text":"…"\E & %Text2 !~R \Q"text":"…"\E & %Text3 !~R \Q"text":"…"\E & %Text5 !~R \Q"text":"…"\E & %Text6 !~R \Q"text":"…"\E & %Text1 !~R \Q"text":"アイテムを追加"\E & %Text2 !~R \Q"text":"アイテムを追加"\E & %Text1 !~R \%ai_texts & %Mojisuu > 100 ]
A23: フラッシュ表示 / Flash [
文字: 保存文字数…%Mojisuu
すぐに次のタスクに進む: オン
Dismiss On Click: オン ]
A24: 変数を設定 / Variable Set [
名前: %Min0
これに: %Saved
構造を出力 (JSONなど): オン ]
If 条件開始 [ %TIME2 < 11 ]
A25: 変数を設定 / Variable Set [
名前: %Min10
これに: %Saved
構造を出力 (JSONなど): オン ]
If 条件開始 [ %TIME2 > 10 & %TIME2 < 21 ]
A26: 変数を設定 / Variable Set [
名前: %Min20
これに: %Saved
構造を出力 (JSONなど): オン ]
If 条件開始 [ %TIME2 > 20 & %TIME2 < 31 ]
A27: 変数を設定 / Variable Set [
名前: %Min30
これに: %Saved
構造を出力 (JSONなど): オン ]
If 条件開始 [ %TIME2 > 30 & %TIME2 < 41 ]
A28: 変数を設定 / Variable Set [
名前: %Min40
これに: %Saved
構造を出力 (JSONなど): オン ]
If 条件開始 [ %TIME2 > 40 & %TIME2 < 51 ]
A29: 変数を設定 / Variable Set [
名前: %Min50
これに: %Saved
構造を出力 (JSONなど): オン ]
If 条件開始 [ %TIME2 > 50 ]
A30: ファイル書き込み / Write File [
ファイル: Maxnote/%DATE
文字: %Min0
%Min10
%Min20
%Min30
%Min40
%Min50
改行を付加する: オン ]
A31: Else
A32: フラッシュ表示 / Flash [
文字: Error
すぐに次のタスクに進む: オン
Dismiss On Click: オン ]
A33: End If 条件終了
タスク: 設定画面
A1: シーンの表示 / Show Scene [
名前: 設定
表示方法: ダイアログ
横方向の位置: 100
縦方向の位置: 100
アニメーション: システム
終了ボタンを表示する: オン
キーガードの上に表示する: オン
Allow Outside Boundaries: オン
Blocking Overlay +: オン
Overlay +: オン ]
───────────────────
…といっても、ただ並べただけでは
ちんぷんかんぷんなので、順番に説明していきますね。
(あ、ちなみに表記がおかしくなってますが
「\」は全部「バックスラッシュ(半角)」です。)
プロファイルは簡単。maxnote起動をトリガーにして、
タスク「自動セーブ」を起動させてます。
で、中身の「自動セーブ」タスクですが
maxnoteウィジェットを開く際、一瞬だけ
全体のメモが表示されることを利用して
最初に100ミリ秒待ったあと
変数「%Count」の数値が10になるまで
画面のテキストIDを読み直してるわけですね。
で、このウィジェットを開いた際ですが
少々癖がありまして
前回アプリで開いた際にホームボタンで戻ったか、
もしくは戻るボタンで戻ったかで
ウィジェットの開き方が違います。
(前回「ホーム」ボタンで戻っていると、起動時に
アプリ画面→メモ編集の順に表示がありますが
前回「戻る」ボタンで戻っていると、起動時に
アプリ画面に向かわず直でメモ編集表示が作動します)
要するに、「戻る」ボタンで戻った際は
次の起動でメモのデータが取れません。
なので、その際に拾得するテキストid(1~6)の
値のどれかが「"text":"…"」になっていること、
またメモウィジェットから開いた際、
内部データが読み込めていない時には
text1もしくはtext2が「"text":"アイテムを追加"」
text1が「\%ai_texts」になることを利用して、
if条件文で動作を仕分けております。
(text1~6の値がどれも条件を満たさないとき、変数「%Saved」を転記。
そうでないとき(どれかが条件に合致している)ときは
再度読み込み、となっているはずです)
※テキストidに関しては
touchtaskの方で解説していますので
詳しい話は省略します※
で、条件を満たしている(ホームボタンで戻ってからの起動である)と
めでたく変数「%Saved」が
「%min10」「%min20」「%min30」「%min40」「%min50」に
転記されるわけですが
この際、「%Saved」を設定するときに使用した「%Time」を
「%Time2」に分割することによって
「%Time2」(現在時刻は何分なのか)によって
%min10~%min50までの仕分けをしているわけです。
で、最後にこれをまとめて
「ファイル書き込み」タスクで
ファイル名に日時指定して
ぶちこむだけです。
こうすることにより
一つのファイルで10分帯~50分帯の5つの変数を持つ
バックアップ,txtが完成するわけです。
一つのファイルを毎回上書き、なんてことしてると
うっかり間違えたデータを残しちゃった場合
目も当てられないですし、
十分ごとにファイルを作っていくとなると
それはそれでファイル数が多くなりすぎますからね。
※追伸 スキャン成功時に現在の文字数を表示するタスクを追加しました。
…何故か300文字ほど誤差が出ますが、ママエアロ。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます