別ファイルに記述されたデイリーテンプレートを呼び出す〜1Writerカスタマイズ③〜

テキストを1行ごとに削除したり移動したりできるようにすることで、「1行ごとのリスト」として扱えるようにしたのが前回までの話。

1Writer – Markdown Text Editor
カテゴリ: 仕事効率化, ユーティリティ

これでかなり便利になり、1行単位での操作ができるようになったので、箇条書きやチェックリストがすごく扱いやすくなりました。
こうなると本格的に「テキストエディタでタスク管理」がしたくなってきます。
しかもぼくは普段から「たすくま」を利用しているので、テキストエディタである1Writerでも、たすくまのように「すべての行動を記録してはいけないものか」、と考えました。

Taskuma —TaskChute for iPhone
カテゴリ: 仕事効率化, ライフスタイル

となると不可欠になってくるのが、リピートタスクを呼び出すこと。
毎日やっていることに関しては、リピートタスクとして登録しておき、日々それを呼び出してタスクリストを作ることで、たすくまのような「やったことの記録がすこぶる取りやすい」テキストエディタが実現します。

1Writerには、「指定したファイルを開く」アクションがあり、それを使うことでテンプレートを呼び出すアクションを作ることができます。
アクションを起動すると、

  • あらかじめ作成したテンプレートファイルを開く
  • 内容をコピーする
  • 元のファイルに戻ってくる

ところまでやってくれるので、あとは任意の場所にペーストするだけ。
準備は、テンプレート用のファイルを作成しておくことと、以下のコードの「ここにテンプレートファイル名を記述」の場所を自分で書き換えること。

テンプレートファイルを開き、コピーし、戻るアクション

d=new Date();
today=d.getFullYear()+zero(d.getMonth()+1)+zero(d.getDate());
yesterday = d.getFullYear()+zero(d.getMonth()+1)+zero(d.getDate()-1);
tomorrow = d.getFullYear()+zero(d.getMonth()+1)+zero(d.getDate()+1);
oneyearsago = (d.getFullYear()-1)+zero(d.getMonth()+1)+zero(d.getDate());
twoyearsago = (d.getFullYear()-2)+zero(d.getMonth()+1)+zero(d.getDate());
threeyearsago = (d.getFullYear()-3)+zero(d.getMonth()+1)+zero(d.getDate());
var dayOfWeek = d.getDay(); // 曜日(数値)
var weekday = [ "(Sun)", "(Mon)", "(Tue)", "(Wed)", "(Thu)", "(Fri)", "(Sat)" ][dayOfWeek]; // 曜日(日本語表記)

var folder = editor.getFolderPath();
var editingfile = editor.getFileName();

var openfilename = "ここにテンプレートファイル名を記述.md";

editor.openFile('Dropbox/Days/'+openfilename,'edit',call); //ファイル名の前には、フォルダを指定。ここでは、「Dropbox」フォルダ内の、「Days」フォルダを指定している。

function call(){
    var text = editor.getText();
    var text = text.replace(/{{today}}/g,today).replace(/{{tomorrow}}/g,tomorrow).replace(/{{yesterday}}/g,yesterday).replace(/{{oneyearsago}}/g,oneyearsago).replace(/{{twoyearsago}}/g,twoyearsago).replace(/{{threeyearsago}}/g,threeyearsago).replace(/{{weekday}}/g,weekday);
    app.setClipboard(text);
    editor.openFile(folder + '/' + editingfile);
}

function zero(s){return ("0"+s).substr(-2)}

コード内に、{{today}}や{{yesterday}}という記述があることにお気づきでしょうか。
これは、テンプレートのテキスト内の{{today}}と書かれている部分を、今日の日付に変換するための記述です。

このように書かれている場合、アクションを起動してテンプレートの内容を取得し、ペーストすると

こうなります(スクショは4月15日に撮影)。

{{oneyearsago}}や{{twoyearsago}}は、1年前、2年前の同じ月日。Obsidianにて連用手帳を実践していて、その際1年前や2年前のページを見返したいので、テンプレートに組み込んでいます。

テンプレートは1つのmdファイルなので、編集が簡単。
ただ、たすくまのような複雑なリピート設定はできないので、そこは今後工夫する必要がありそうです。


これで、日々のリピートは簡単に呼び出し可能になり、かなり詳細な記録を取ることができるようになりました。
こうなってくると、1日の計画を立てるときには書いていなかったタスクも、リピートに登録されているのであれば、リピート一覧から選択し、挿入できるようにしたくなってきます。
1Writerには、配列のデータから「リスト」を作成するアクションもありまして。次はそのあたりについて書いていきます。

See Also