MilkScriptで日報用やったことリストを取得し、選択タスクのノートをすべてウィンドウ表示させる
公開 2023/11/27 18:28
最終更新 2023/12/11 11:24
引き続きこれまでに書いたMilkScriptの紹介です。

日報用やったことリスト #

とある備忘録だけ集めたリストに『ジャーナル』というタスクがあるのですが、ここに『0101』『0102』など日付ごとのサブタスクを365日分作って、ノートにその年ごとの食べたものや、起こった出来事などを日記的につけています。

ここに追加する『その日、完了させたタスクのリスト』をウィンドウ表示させるためのスクリプトです。

最新ノートの一行目で日付判断をしていますが、もしそこから情報が得られない場合は今年の西暦 + タスク名で検索することとします。

スクリプト実行前 #



スクリプト実行後 #



スクリプト #

if (rtm.getSelectedTasks().length !== 1) {
  throw new Error("タスクが選択されていない、または複数タスクが選択されています");
}
const [selectedTask] = rtm.getSelectedTasks();

// 選択タスクが数値4桁だったら実行される。
if (/^\d{4}$/.test(selectedTask.getName())) {
    // ノートの内容から日付を取得。エラーだったらタスク名 + 今年の西暦
    const note = selectedTask.getNotes()
    .reduce((result, note) =>
        result == null || note.getModifiedDate() > result.getModifiedDate() ?
        note : result, null);
    if (note === null) {
        throw new Error("選択されたタスクにノートがありません");
    }

    const [context] = note.getContent().split('\n');

    const hasYYMMDD = /^\d{6}/.test(context);  // contextの先頭6文字が数値だったらtrue
    const date = formatDatefromYYMMDD(hasYYMMDD ? context.slice(0, 6) : new Date().getFullYear().toString().slice(-2) + selectedTask.getName());

    const completedDate = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}`

    // その日、完了させたタスク一覧をメッセージ表示させる。
    const completedTasks = rtm.getTasks(`status:completed AND completed:${completedDate} AND NOT list:CheckList`)
        .sort((a, b) => a.getCompletedDate() - b.getCompletedDate());
    const taskList = [
        `### 完了タスク: ${completedTasks.length}\n`,
        ...completedTasks.map(task => `- ${task.getName()}\n`)
    ];
    
    rtm.newFile(taskList.join(``), rtm.MediaType.TEXT, 'RTM_Tasklist.txt');
}

// yymmdd形式を日付に変換
function formatDatefromYYMMDD(yymmdd) {
    const year = Math.floor(yymmdd / 10000) + 2000;
    const month = Math.floor((yymmdd % 10000) / 100);
    const day = yymmdd % 100;

    return new Date(year, month - 1, day);
}

ここで取得したやったことリストを、その日のノートの最後にコピペして記録しています。

自動で当該ノートに追記させる方法もあるな……と、今、このエントリーを書きながら思いました。
そのうち、実装できたらまた改良版をここに記したいと思います。


ジャーナルエクスポート #

上記のジャーナルですが2019年から開始しており、だいぶデータが溜まってタスクを選択するだけで数秒時間を要するようになってしまいました。

また、いつかサービスが停止された時に、これまでのデータがチリに消えてしまうのも惜しい。

そこで、これまでのジャーナルを一括でどこかに退避するよう作ったスクリプトです。

選択したジャーナルタスクのすべてのノートをウィンドウ表示させます。

スクリプト実行前 #



スクリプト実行後 #



ウィンドウの大きさの都合上、2022年のジャーナルしか表示されていませんが、この下に2021、2020、2019年のジャーナルもちゃんとあります。

スクリプト #

if (rtm.getSelectedTasks().length !== 1) {
  throw new Error("タスクが選択されていない、または複数タスクが選択されています");
}
const [selectedTask] = rtm.getSelectedTasks();
// 選択中のタスクにあるノートを作成日の古い順から下にウィンドウ表示。
// ノート区切りは『---』、1行目に『## 』を付加する。
const note = selectedTask.getNotes()
    .sort((b, a) => a.getCreatedDate() - b.getCreatedDate());


const context = [
  ...note.map(note => `## ${note.getContent()}\n\n---\n\n`)
];
// 最後の行だけは改行と区切り線『---』を抜く
const num = context.length - 1;
context[num] = context[num].slice(0, context[num].length - 7);

rtm.newFile(context.join(``), rtm.MediaType.TEXT, selectedTask.getName()+'.md');

今は選択したタスクの全てのノートをウィンドウ表示させるだけですが、今後は『複数選択したタスクの2019年の分だけ吸い上げる』とかできるようになったら便利かもしれないな。……と、思っております。

これも、そのうち実装できたらここに載せたいです。

---

このジャーナルはなくても日頃のタスク管理にはまったく影響ないんですが、去年の今頃何してた……とか、結婚前にこんなことしてたんだ。とか娯楽的な楽しみ方ができてとても良いです。

ただRTMに負荷がかかっているようなので、他のノートアプリへエクスポートしていきたいと思っています。
北海道在住の四十路OL主婦です。
最近の記事
WordPressから撤退
BrownDots(http://browndots.net)という名前のブログを書いていました。 しかし更新が滞ったまま数年が経ち、このたび撤退した…
2025/01/01 16:52
Excel VBAメモ: コレクションを使ってオートフィルタした値を重複なく配列に格納する方法
オートフィルタしたあとのデータから重複なく可視セルの値を配列に格納する方法のメモです。 Sub オートフィルタした値を重…
2024/05/23 15:21
自己紹介
北海道帯広在住。44歳。女。既婚。子は独立済み。 商業高校卒。中小企業の事務歴26年。2020年 働きながら放送大学卒業。…
2024/05/21 10:16
MilkScriptでプロジェクトレポートと、年次レビュー用タスクリストを取得する
MilkScriptに関する記事は、これで最後です。 今回も条件を指定してタスクリストを取得し、ウィンドウ表示させるといったもの…
2023/12/10 20:06
MilkScriptで週次レビュー用やったことリストや月次レビュー用やったことリストを表示する
引き続き、これまでに書いたMilkScriptの紹介です。 前回もそうですが、この記事も、この次の記事もずっと「完了したタスクをウ…
2023/12/05 13:07
MilkScriptで日報用やったことリストを取得し、選択タスクのノートをすべてウィンドウ表示させる
引き続きこれまでに書いたMilkScriptの紹介です。 日報用やったことリスト # とある備忘録だけ集めたリストに『ジャーナル…
2023/11/27 18:28
Milkscript ノートの内容からサブタスクを作成。サブタスクを一括削除し、内容をノートに転記す…
引き続きMilkScriptのコードを載せていきます。 ノート → サブタスク # ノートの内容からサブタスクを追加していくスクリ…
2023/11/21 13:57
MilkScriptを使ってタスク名の冒頭にキーワードを付与する
これからタスク管理アプリ『remember the milk(以下RTMと記述)』独自のスクリプトについて、いくつか使っているコードを紹介し…
2023/11/20 13:29
テストポスト
大見出し # てすとてすと。 あいうえお、かきくけこ。あいうえお、かきくけこ。あいうえお、かきくけこ。あいうえお、かきく…
2023/08/10 10:23
もっと見る
タグ
MilkScript(5)
ExcelVBA(1)
もっと見る