Android自動化アプリ「Tasker」を使いこなす。カレンダーに予定を登録するTaskを作り | 「藍染 迅(超時空伝説研究所改め)」の部屋

「藍染 迅(超時空伝説研究所改め)」の部屋

小説家ワナビーの「藍染 迅(あいぞめ じん)」です。

書籍化・商業化を目指し、各種コンテストに挑戦しながら、カクヨム、小説家になろう、エブリスタ、アルファポリスなどに作品を投稿しています。

代表作は異世界ファンタジー「「飯屋のせがれ、魔術師になる。」。

前回の続きである。

結局、特定の日時と現在時間との差分を分単位に計算し、Calendar Insert機能を利用してスケジュールを登録するルーチンを組んでみた。
例によってネットを検索し、月による日数の変動、うるう年の処理などを組み込む計算式を入手。

こんな記事を参考にさせていただきました。

Taskerに関する「コツ」として、計算式から割り出した現在時間からのoffset値(単位:分)について、1分マイナスしてやる必要があるという点がある。おそらく「分」に端数=秒の成分があるため、計算結果が1分大目になってしまうのではないかと推測している。

結果として、1引いてやるとうまくいくので、それで良いかと。

そもそもこのタスクに取り組んだ理由は、仕事上使用しているLotus Notesのスケジューラーに登録した予定データをできるだけ自動に近い方法でAndroidのカレンダーに取り込めないかという狙いからである。

やってみると制約がいろいろと存在し、簡単なようで簡単でない。
ちなみに、Notesのバージョンは6.5である。

予定データをコピペすると、どうやらvCard形式のデータになるらしいのだが、日本語が文字化けしてしまい、復元できない。
それでは役に立たないので、「書き出し」というメニュー(=どうやらExportの直訳らしい)を使用する。

csvとかtabular textとかフォーマットを選択できるのだが、「Structured Text」以外はまともなデータが書き出せない。(日付が省略されてしまったりする)

エクスポートしたテキスト・ファイルをAndroid宛に添付メールで送信し、いまのところ手動でAndroidのSDカードに登録。そのデータを切り出して、Androidカレンダーに登録するTaskを製作中。

ほぼ動作するものができてきた。

終日予定、繰り返し予定を上手く取り扱えないという弱点があるので、当面それは除外。
いずれにしてもそれらは時間を気にするものではないか、すでにカレンダーに登録されているので、除外しても実用には差し支えない。

はまった罠として、データの区切りに「用紙送り記号」を入れるのがNotesのデフォルトなのだが、Taskerの読みとり時にこの記号に差し掛かるとエラーになって先に進めないようだ。
そこで、Notes側で別の文字コードを指定するオプションを指定した。

どうせ読み飛ばす記号なのでなんでもよいのだが、適当に設定したら数字の「8」になった。

そんなこんなで「どツボ」を回避し、かなり完成形に近づいた。
さらにテスト・ドライブ中であるが、新たな罠が見つかった。

Notesからの書き出しデータ中に、なぜが項目の並び順が変わる場合がある。
使用しているのは、「内容(Subject)」、「場所(Location)」、「開始時刻(STARTDATETIME)」、「終了時刻(EndDateTime)」の四項目なのだが、この並び順が変わることがあるようだ。

よって、四項目を(どういう順番でも)読み込み終わったら予定の書き込みを行うというロジックを組み込む予定である。

書き込み部分についてこれでよいといえるものができ上がったら、メール受信時に添付ファイルを自動登録し、カレンダーへの書き込みを連動して行うというTaskが作れないかどうか検討してみたい。

なんとなく携帯メール経由では無理そうな気がするので、Gmailに飛ばしてiftttかAttachmentMeを使って、クラウド・サーバーに添付ファイルを登録し、Taskerからそれを読みだしにいくことをイメージしている。

さて、どうなることやら。そこそこ、おもしろそうである。

これはすべて個人の暴走である。