4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

AppleScript ・cron・pmsetで毎日のルーティーンを自動化しよう!

Last updated at Posted at 2021-02-11

指定したURLやアプリを決まった時間に起動させる

こんにちは! 皆さんは毎日見るサイトって決めてますか? 自分は毎日日経新聞や自分のfeedを読んでいるます。Trelloを使ってTodo管理もしています。 でも自分の手でURLを開いているとついつい忘れてしまうことってありますよね?

そこでURLやアプリを決まった時間に自動で開いてもらうスクリプトを書いてみました。
これでURLやアプリを開くことに頭を割くことなく自動で行ってくれるので、新聞を読んだりTodoを朝設定することを習慣にすることができました。

AppleScriptを使ってURLとアプリを開くスクリプトを作成

cronで決まった時間にスクリプトを実行

スリープしてるとcronが実行してくれないのでpmsetでcron起動直前にスリープ解除をする設定

という流れで行きます。

##目次
1.AppleScriptの作成
2.cronの設定
3.pmsetの設定
4.まとめ

##1.AppleScriptの作成
URLとアプリを起動するAppleScriptを書きます。

url_app_open_script.scpt

set hour to (hours of (current date))

if hour  0 and hour  8 then
	tell application "Trello" to activate
	delay 2
	tell application "Mail" to activate
	
	set urlList to {"https://www.nikkei.com/paper/", "https://feedly.com/i/my",  "https://sekai-kabuka.com/"}
	
	repeat with urlItem in urlList
		open location urlItem
		delay 2
	end repeat
	
else if hour > 8 and hour < 20 then
	tell application "Mail" to activate
	
	set urlList to {"https://feedly.com/i/my", "https://sekai-kabuka.com/"}
	
	repeat with urlItem in urlList
		open location urlItem
		delay 2
	end repeat
	
else
	tell application "Mail" to activate
	 
	set urlList to {"https://www.nikkei.com/paper/", "https://feedly.com/i/my"}
	
	repeat with urlItem in urlList
		open location urlItem
		delay 5
	end repeat
	
end if

まず最初に

set hour to (hours of (current date))

を使ってhourという変数に今何時かを入れます。
自分の場合は0~8時、8~20時、20~24時までで場合分けして起動するようにしています。

それをif文とfor文で回します。

tell application "アプリの名前" to activate

tellでアプリを起動することができ。

open location "URL"

openでブラウザでURLを開くことができます。

##2.cronの設定
自分の環境ではcronから直接AppleScriptを実行することができず、一回pythonを挟んでいます。

open_python.py
import os

flag = 1

if flag:
	os.system('osascript ".scptまでのフルパス"')

osascript ~.scptでAppleScriptを起動することができます。

このpythonファイルを実行するようにcronを設定します。

crontab -e

cronはターミナルで"crontab -e"と打ち込めばcronを設定する画面に入ります。
iを押すとinsertになりcronを設定して、escを押した後:wqでcrontabから抜けることができます。

cronは
###分 時間 日 月 曜日 コマンド
という順番で設定でき、今回は7,18,22時の0分に毎日実行する設定にします。
*はワイルドカードで毎回という設定です。

(こちらの記事がcronの時間設定について簡潔にまとまっており大変参考になります。)

00 7,18,22 * * * cd /Users/user_name/Codes/url_opens/; zsh -c 'python3 /Users/user_name/Codes/url_opens/url_open_python.py'

このように設定すると7,18,22時にurl_open_python.pyが自動で実行してくれます。

##3.pmsetの設定
ただしcronはスリープ状態だと起動してくれません。

そこで6:59分,17:59分,21:59分にスリープを解除するように設定します。

(ちなみに一日一回でいい場合はMacのsetting → バッテリー →スケジュールで指定した時間にスリープを解除するGUIがあります。)
screenshot.png

ではpmsetでスリープ解除時間を設定します。
sudoでcronを開いてpmsetを設定します。(sudo権限で実行しないと上手く行かない。)

sudo crontab -e

でcronを開いたら

1 7 * * * pmset repeat wakeorpoweron MTWRFSU 17:59:00
1 18 * * * pmset repeat wakeorpoweron MTWRFSU 21:59:00
1 22 * * * pmset repeat wakeorpoweron MTWRFSU 6:59:00

このように設定します。

3つ設定しているのは理由があります。
Macはスリープ解除設定を一つしか持つことができないからです。

なので
07:01で17:59にスリープ解除
18:01で21:59にスリープ解除
22:01で06:59にスリープ解除

するという設定をすることでぐるぐる回せるようになります。

##まとめ
これによって決まった時間にアプリとURLを開くことができるようになりました!
自分の場合は起きたら日経や株価がチェックできるようになっているので、情報収集のルーティーンを習慣化することができました。
日中や夜も自動で開いてくれるので常に情報をキャッチアップすることができます。

4
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?