毎日のタスク管理の記入がめんどくさいあなたへ!jsでMacのリマインダーに投稿してみた。
皆さん 初めまして
SKIYAKIでクリエイターをしています。 ダーヤマと申します。
皆さんはゴールデンウィークはどうお過ごしになられたでしょうか? 旅行に行った人いるかもしれません。 もしかしたら家でのんびり過ごした人もいると思います。
かくいう僕はシンガポールに行っていっていました。
そう常夏のアジア、シンガポールに!私は!行ってきましたよ!フィリピン経由でね!
きらめくアジアンガール、口からとめどなく水を出すマーライオン、異国のスパイスに酔いしれる。 そんなリア充めいた想像をしたと思います。
ただ私のどや顔を浮かべたあなたに、一つお知らせしたい。
シンガポールのマーライオンのところで財布を海に流され、 携帯に至ってはもずくとなって消えました。。。! これが調子に乗りすぎる男の天罰か!
ということで、今日はMACでjavascriptを操作して、 リマインダーに定期的な予定を登録してみたいと思います。
実はjavascriptでMacがいじれるということは今まで知りませんでした。
そしてApple Scriptの存在もね!
YOSEMITEからの機能で、JXAと呼ばれています。
ググったら所以が出てきます。詳しくは参考をみてください。割愛します。
実行方法
実は色々な呼び出し方があります。
- Script Editor このアプリですね。 環境設定からApple Scriptか選べます。
- Automator ロケットランチャーを持ったロボットのこいつです。 登録しておけばアクションとして右クリック呼び出しできます。
-
コマンド
みんな大好き黒い画面です。
osascriptコマンドで実行できます。
osascript -e console.log('hello')
-
コマンド パート2
パイプ*1から使用する。 あえてhelloを呼び出すと以下になります。
echo "console.log('hello');" | osascript -l JavaScript’
*1パイプとは・・・・コマンドの標準出力を次のコマンドに渡す処理 -
コマンド パート3
jsファイルから直接実行します。 デスクトップとかbash_profileとかなんかしとけば管理しやすそうですね。
以上の中から今回は、Script Editorを利用していきたいと思います。 では実際にリマインダーに追加していきたいと思います。
準備
まず変数やイベントについてですが、、、
なんだよ、マジわからないよというあなた、
安心してください。ちゃんとデフォでありますよ。 Script Editorから調べられます。
command + shift + o
です。今回だとリマインダーのアプリを選択します。
[f:id:system-skiyaki:20160508195016p:plain][f:id:system-skiyaki:20160508195016p:plain][f:id:system-skiyaki:20160508195016p:plain]
それらを参考に作成していきます。
最初にApplicationを使いアプリを呼び出します。
var app = Application(“Reminders”)
webでいうとIDを指定したところです。 次にリストに何があるのかを確認します。
var app = Application(“Reminders”) app.lists.name()
リストの名前をこれで取得できます。
この時点で配列になってるので 例えば
var app = Application(“Reminders”) var lists = app.lists.name() lists[0]
このように変数にすれば中に格納されている配列を指定できます。
なっていないよ!っていう方は、以下を参考に配列にしてもらい使用してみてください。
var app = Application("Reminders") lists = app.lists list_arr = Array.apply(null,lists) list_arr = list_arr.map(function(e){ return e.name() }) list_arr //=>[“〇〇”,“〇〇”,“〇〇”]
上記の解説をざっくりすると、
Array.applyはlistsの中身を分解して、配列を生成します。
mapは配列の中身に対して、コールバックして、name()を呼び出しています。
※ちなみにTODO本体を取得する際は、list[“〇〇”].remindersから同様の手順です。
リマインダに登録
ではリマインダーに登録してみましょう。
登録する際にはpush( entry )イベントを利用します。
var app = Application("Reminders") entry = app.Reminder( { name : "お腹が弛んだあなたに贈る腹筋リマインダー", body: "腹筋を300回する" } ) app.lists["毎日のタスク"].reminders.push( entry )
nameがタイトル、bodyが内容ですね。
for文などを使えば連続で数字を変えたりしながら登録ができます。 登録が完了するとScript Editorでは1が返ってきます。
そう、つまりこのリマインダーの流れは腹筋スレ。。。というわけです。嘘です。
以上になります。
自動化のハードルが下がりつつありますね本当に。 素敵。。。!
それでは私はお腹が弛んでるので腹筋したいと思います。 ではまたどこかで!
参考)
・MAC Developer Library https://developer.apple.com/library/mac/releasenotes/InterapplicationCommunication/RN-JavaScriptForAutomation/Articles/Introduction.html#//apple_ref/doc/uid/TP40014508-CH111-SW1
・知らないうちにMacがシステム標準でJavaScriptで操作できるようになってた (JXA) http://qiita.com/zakuroishikuro/items/1b02378bf9e940602d87
・Javascrript for OSX Automation アドベントカレンダー http://takuya-1st.hatenablog.jp/entry/2014/12/01/000000