OmniFocus 4 は間もなくリリースされます!私は長年にわたり、Todoist、TickTick、Things、Sorted など、市場に存在するほぼすべての TODO ソフトウェアを試しましたが、最終的には OmniFocus が私の最終的な選択肢となりました。そして、OmniFocus の強力さについて話すとき、彼の強力な自動化能力であるOmni Automationを挙げることができません。
Omni Automation は実際には JS スクリプトに基づいており、純粋な JS スクリプトの作成プロセスは... 言葉に尽くせません。Omni Automation 公式は TypeScript の定義ファイルを提供していますが、一方で型チェックをうまく行うことが難しく、また、その詳細度も改善の余地があります(長期間更新されず、any などが大量に使用されています)。さらに、パッケージングツールが不足しているため、コードロジックの再利用も非常に困難です(私は実際には Mac 版 OmniFocus のバグを利用して長い間ロジックの再利用を行っていました)。
OmniFocus 4 の登場を祝して、私は個人的に開発し使用しているソリューションをオープンソース化することにしました。パッケージスクリプトと型定義、そして私が使用しているいくつかのユーティリティ関数とスクリプトを含んでいます。これにより、より多くの人々が楽しく OmniFocus スクリプトを書くことができることを願っています。
使用方法
- このテンプレートを使用してリポジトリを作成します
- 作成したリポジトリをクローンします
pnpm install
を実行して依存関係をインストールしますpnpm build
を実行してスクリプトをビルドします
スクリプトのソースコードはsrc
ディレクトリに配置され、(OmniFocus スクリプトで使用できる)コンパイル結果はdist
ディレクトリに配置されます。
スクリプトの作成
src
ディレクトリ内の_
で始まらない任意の TypeScript ファイルは、OmniFocus スクリプトと見なされてコンパイルされます(_
で始まるスクリプトファイルはユーティリティ関数用に予約されています)。
任意のスクリプトは、次のパターンに従う必要があります:
export const action = new PlugIn.Action(function (selection) {
// do anything you want
});
action.validate = function (selection) {
// do anything you want
};
export const meta: Meta = {
label: "...",
description: "...",
identifier: "...",
author: "...",
version: "0.1",
};
ここで:
action
とmeta
は必須であり、action.validate
はオプションですmeta
はスクリプトの最後の部分でなければなりません。それ以降には何も含めることはできません。
ビルドと使用
pnpm build
を実行すると、ビルドされたスクリプト(.omnifocusjs
で終わる)がdist
ディレクトリに配置されます。
ビルドされたスクリプトを OmniFocus のスクリプトディレクトリに直接コピーするか、スクリプトを使用して同期することができます。
OmniFocus スクリプトを iCloud で保存している場合は、pnpm sync
を使用してビルド済みのスクリプトを iCloud の OmniFocus スクリプトディレクトリに自動的に同期できます。iCloud を使用せずにカスタムパスを使用している場合は、sync.sh
ファイルを変更してターゲットパスを変更できます。
End
このソリューションは私個人が 1 年以上使用していますが、オープンソースバージョンにはいくつかのエラーがある可能性があり、さらにカスタマイズのニーズがあるかもしれません。
リポジトリページに Issue や PR を投稿することを歓迎します!