林檎の木の下で

iPhoneアプリやwebサービスの紹介など。いつもどうしたら毎日を効率良く過ごせるか考えてます。

【ノンプログラマーが作るTextwellアクション】その4 カレンダーのイベントとリマインダー&Todoアプリについてのアクション

      2015/06/30

【ノンプログラマーが作るTextwellアクション】その4 カレンダーのイベントとリマインダー&Todoアプリについてのアクションcode-459070_640

こんにちは、sakurako(@0518sakurako)です。

Textwellのアクションを作る第四回です。

今回はカレンダーのイベントとリマインダーアプリなどのタスク管理アプリについてのアクションを考えます。

スポンサーリンク

全3回のシリーズについてはこちらです。

【ノンプログラマーが作るTextwellアクション】その1 使われる関数とオブジェクト

【ノンプログラマーが作るTextwellアクション】その2 テキストをひな形が用意されている他のアプリに送る方法。

【ノンプログラマーが作るTextwellアクション】その3 urlスキームを使ってテキストを他のアプリに送る。

Textwell

360円
(2015.06.28時点)
posted with ポチレバ

カレンダーを使用したアクション

標準のカレンダーを使用したアクション

まず、標準のカレンダーについてのアクションはデフォルトのアクション集に載っています。

T( 'event', {
title: T.line( 1 ),
notes: T.lines( 2, null ),
allDay: false,
now: false,
option: 'none'
} );

一行目がタイトル、二行目以降がノートになっています。デフォルトのアクション集には3種類のタイプがあり、上のソースで書かれたものを標準タイプとしてallDayがtrueになっている一日中の予定を登録するAllDayとnowがtrueになっているNowがあります。

選択すると指定したものが書き込まれた状態で、新規イベント作成画面が開きます。

標準カレンダーについてはその2で紹介したひな形が用意されているタイプと同じということになります。

その他のカレンダーアプリについてはその3で紹介したようにurlスキームを使用して登録します。

Staccal2

人気のカレンダーアプリ、Staccal2。Staccal2にはイベントを登録するurlスキームと検索するurlスキームの2つがあります。

イベントを登録するurlスキーム

staccal://event?title=タイトル

 

イベントを検索するurlスキーム

staccal://search?keyword=キーワード

 

これを使うとイベントを登録するurlスキームは

T( 'urlScheme', {
url: 'staccal://event?title=' + encodeURIComponent( T.whole )
} );

になり、検索するurlスキームは

T( 'urlScheme', { 
url: 'staccal://search?keyword=' + encodeURIComponent( 
T.current ) 
} );

赤字になっている部分は変更可能です。

同じようにイベント作成のurlスキームがタイトルのみのカレンダーアプリではurlスキーム部分を変更することでアクションを作成できます。

Fantastical2

海外で特に人気の高いFantastical2。

こちらはイベント名とurlのところに記載する

fantastical2://parse?sentence=イベント名&notes=urlのところに記載

というurlスキームを使用して

T( 'urlScheme', {
url: 'fantastical2://parse?sentence=' + encodeURIComponent( T.line(1) )
+ '&notes=' + encodeURIComponent( T.line(2) )
} );

というようにアクションを作ることができます。

Fantastical2は他にもtitle, location, url, notes, start, end, allDayなどのパラメーターを取ることができるはずなんですが、そこはうまく動かなかったです。

sentenceとnotesについては日本語でも問題なく動きました。

リマインダー&Todoアプリを使用したアクション。

次はリマインダーとTodoアプリを使用したアクションについてです。

標準のリマインダーを使用したアクション

標準のリマインダーを使用したアクションはデフォルトアクション集にあります。

  1. リマインダーに登録
    T( 'reminder', {
    
    title: T.current, 
    
    option: 'none'
    
    } );
  2. リマインダーに登録(ノートあり)
    T( 'reminder', {
    
    title: T.line(1),
    
    notes: T.lines(2, null),
    
    option: 'none'
    
    } );

 

1の方は現在の行か選択範囲のテキストがリマインダーとして登録され、2の方は一行目がタイトルに二行目以降がノートに記載されます。リマインダーの場合、リストを選択することができないので全てデフォルトのリストに登録されます。

↑ご指摘を受けました。下からポップアップが出てくるのでリストを選択することができます。すみません。

Clear

次にデフォルトのアクション集にはClearを使って様々なアクションが用意されています。

Clear – タスク&ToDoリスト

600円
(2015.06.29時点)
posted with ポチレバ

まずClearで用意されているurlスキームは公式サイトによると次のとおりです。

  • リスト集を開く
    clearapp://lists/show

     

  • リストを見る
    clearapp://list/show

    パラメーター

    listName: リスト名listPosition: リストの位置。 top、bottom、1-based indexが取れる。

  • リストを作る
    clearapp://list/createパラメーターlistPosition

    : リストを作る位置listName: リスト名

    tasks: リスト内のタスク

    ただし、listPositionが指定されていなければ一番上に作成されます。listNameやtasksが指定されていたりすでに存在するのであれば作られません。

  • タスク作成
    clearapp://task/createパラメーターtaskPosition

    : タスクの位置listName: タスクが含まれるリストの名前listPosition: タスクを含むリストがどこに作られるか。taskName: タスク名

    ただし、タスク位置の指定がなければ一番上にきます。listPositionとlistName両方の指定がある時はlistNameが優先されます。listPositionとlistName両方とも指定がなければ最後のリストに追加されます。

 

では、このurlスキームを前提にデフォルトのアクション集に用意されているアクションを見ていきます。
まず普通にClearに送るだけ(Add a Task to Clear)だと

T( 'urlScheme', {

url: 'clearapp://task/create?taskName=' + encodeURIComponent( T.current )

} );

タスク名を現在の行か選択範囲のテキストをしているT.currentを使用しています。通常のurlスキームを使用したアクションです。

次にTextwellというリストにタスクを追加するアクション(Add a Task to Clear(Textwell))です。

var listName = 'Textwell';

T( 'urlScheme', {

url: 'clearapp://task/create?taskName=' + encodeURIComponent( T.current ) + '&listName=' + encodeURIComponent( listName )

} );

varは変数表現なのでvar以下の単語が変数ですよという合図みたいなものです。変数とは数学のx,y,zみたいなものかなあと思っています。x=1とかy=3とかみたいに指定する数を取ることもできるし、y=3x+5みたいな変数を含む式を取ることもできる。さらにy=f(n)みたいな形をとることもできるものです。

今、最初にlistNameはここではTextwellという単語を指しますよと言われています。で、あとは通常のurlスキームを使用したT関数になります。

タスクはT.currentで現在の行か選択範囲のテキストを示し、リスト名はlistNameとなっているのでTextwellを指します。

この関数は他のTodoアプリでも使うことができます。

例えば2doというアプリでは

var listName = 'private';

T( 'urlScheme', {

url: 'twodo://x-callback-url/add?task=' + encodeURIComponent( T.current ) + '&forList=' + encodeURIComponent( listName )

} );

でprivateというリストの中にタスクを作ることができます。privateの部分を既存の他のリスト名に変えても動きます。

2Do

無料
(2015.06.29時点)
posted with ポチレバ

ちなみに今は無料になっていますが、本当は1800円とかだったと思います。

次にTextwellというリストの中に複数のタスクを登録するアクション(Add Tasks to Clear(Textwell))と新しいリストを作成してその中にすべての行もしくは選択した複数行のタスクを複数タスクとして登録するアクション(Create a List in Clear)です。

上の部分のJavascriptで行を分けてそれぞれのタスクに入れています。でもこれ、Clearでしか動かないんですよね。

urlスキーム部分だけ他のアプリに置き換えて使えるのかと思ったけれど、そうするとタスク登録はできるけれどリスト指定も行を分けてタスク登録もできませんでした。きっとまだ勉強が必要なんだろうな。

まとめ

本当はClearのアクションをもとに他のTodoアプリで動くようにしたかったんですが、いつまでたっても記事をアップできなさそうだったのでとりあえず保留。

Javascriptを勉強しながらまたできたら記事書きます。

ノンプログラマーでもTextwellアクションを作れるようになるぞ!

追記(2015/6/30)

Clearには公式サイトでは見つけられなかったのですが、他に複数タスクを登録するurlスキームというものがあり、

それが

clearapp://list/create?listName=リスト名&tasks=タスク1,タスク2,タスク3,・・・

 

という形で表されます。上で見てわかるようにタスクをカンマで区切ることによって複数タスクを登録することができます。

Textwellではこのurlスキームを使用して改行されている文章に間にカンマを入れて並べるソースが書かれていました。

私が試した他のタスク管理アプリではこのurlスキームに相当するurlスキーム自体がなかったのでできませんでした。

同じような形で複数タスクを登録するurlスキームを持っているタスク管理アプリだとこのソースを利用してアクションを作成することができると思います。

 

 - iPhoneアプリ ,

   

スポンサードリンク

スポンサードリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

  関連記事