LoginSignup
6
4

More than 5 years have passed since last update.

JXAを一定時間ごとに実行させる (アプレット)

Last updated at Posted at 2015-02-25

cronを使うのもいいけど、アプレットを作っても出来る。

3秒ごとに通知センターに時刻を通知するやつ
DELAY_SECONDS = 3;

app = Application.currentApplication();
app.includeStandardAdditions = true;

function idle(){
  app.displayNotification(new Date().toString());
  return DELAY_SECONDS;
}

Script Editorに上記のソースを入力する。
保存時の設定を以下のようにする。

  • ファイルフォーマットを「アプリケーション」にする
  • 「ハンドラの実行後に終了しない」にチェック

スクリーンショット 2015-02-25 3.48.30.jpg

実行する。

スクリーンショット 2015-02-25 3.52.13.jpg

3秒ごとに通知される。うっとおしい。
Dockのアイコンから右クリックで終了。

説明

idle関数はreturnで返した秒数待ってから再度実行される。
ただしアプリケーションにして、実行後に終了しない設定にしないと何も実行されない。

↓AppleScriptの説明だけどこちらが分かりやすい。

説明短いけど公式はこっち。

分からなかったこと

osacompileでテキストファイルの.jsから作成

$ osacompile -l JavaScript -s -o your_app.app ~/your_source.js

ってやれば.jsから.appにコンパイルされる。
それでScript Editor使わなくても出来るはずだけど、起動はするけど通知されなかった。
動いてないっぽい。
作成後にScript Editorにドラっグ&ドロップして保存し直したら動いた。

-oで名称を指定する際に.appにすればアプレットになる。デフォルトは.scpt
-sオプションはstay-openで、上のほうで「ハンドラの実行後に終了しない」にチェックしたのと同じ。はず。

6
4
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
6
4