見出し画像

読書記録:「ToDoリスト」は捨てていい。

本マガジンでは、「Notion で(自分なりの)タスク・時間管理を行う方法」について、連載してきたので、

いきなり「読書記録」が挟まるのは、たとえ、書籍の内容が「タスク・時間管理」に関係するとは言っても、多少、不自然に思われるかもしれません。

割と、その辺は、気にならないという人も多いですかね?

実は、今まで、Notion の使い方や、「環境構築」をテーマとした記事ばかりで、思想的な話は、あまりしてきませんでしたし、
例えば、「プレ着手」の概要や、「inbox 不要論」などについては、一応、マガジン外で語るという、ある種の線引きをしています。

そして、それらの記事を上げた後で、マガジン内では、「プレ着手」を実践するための、より具体的な方法を解説する、という形式をとっていました。

では、なぜ、今回の「読書記録」は、マガジンに含めようと思ったのかというと、もちろん、Notion にも関係があるからですね。

私の場合、Notion で実践しているタスクシュートのログの中に、「読書メモ」が残されているから、と言えば、分かりやすいでしょうか?

つまり、本書の感想や、自分なりの考察などは、いずれ、マガジン外で書くとして、まずは、純粋に「読書記録」だけを、ご紹介したいと思います。

まぁ、あまり前置きが長くなってもアレなので、一体、どういうことなのかは、実際に、この記事を軽く読んでみて、確認していただければ幸いです。

それでは、始めていきましょう。


書籍紹介

本書は、副題にもある通り、人はなぜ「消耗」するのか、どうすればそれを回避できるのかについて、やさしく教えてくれる本で、

もっと言えば、「ToDoリスト」はなぜ人を消耗させるのか、どうすれば「捨てていい」とまで思えるのか、といったようなことが分かります。

タイトル通りですね。

しかし、書かれていることは、当然、それだけにとどまりません。

ただ、今回は、上述の通り、内容を深掘るのではなく、「読書メモ」をまとめるのが目的なので、早速、次の作業へと進んでしまいましょう。

ちなみに、タスクシュート認定トレーナーの方による紹介では、次の記事がオススメなので、

基本的に、タスクシューター向けにはなりますが、内容を早く知りたいといった場合には、是非、参考にしてみてください。

Notion 上でログを確認してみる

というわけで、ここからが本題なのですが、
まず、これから何をするのかが分かりやすいように、実際に本書を読んだ時のログの一覧を、Notion 上で表示させてみましょう。

私は、本書を「電子書籍」というプロジェクトの(ルーチン)タスクの一種として、読み進めていたため、
例えば、以下のような、「プロジェクトページ」に配置してあるテーブルで、さらにタスクの「名前」による絞り込みや、検索を行うことにより、
該当するタスクのログだけを、確認することができます。

「タスクリスト」テーブルを検索してログを絞り込む

単独のルーチンやプロジェクトでログを取っていれば、もっと楽にフィルタリングできたかもしれませんが、その辺の事情は、人それぞれですよね。

ともかく、これを見れば、本書を何回に分けて読んだのか、読むのにかかった時間や、先送くった回数なども、一目瞭然なわけですが、
今回、重要となるのは、各タスクのページに書かれている「内容」です。

ページに何かしら記入がある場合には、タスク名の左にアイコンがつくようになっているので、その点は分かりやすいでしょう。

例えば、ページの一つを適当に開いてみると、次のようになっています。

タスクページをサイドピークで開く

この日は、割と真面目にメモを取っていますが、大抵、もっとラフに、自分なりに重要だと思った点についてだけ、まとめている感じです。

と言っても、そもそも、私の場合、こうして、毎回のようにメモをしながら読む本というのは、かなり珍しく、
夕方以外の時間帯にも、午前中や夜寝る前に、日課として、それぞれ別の本を(しかも、曜日によって違う本を)読み進めていたりはするのですが、
ほとんどの場合、時間を記録するだけで、ページの中身は、基本的に空白のままになっているというのが、実情ではあります。

逆に言えば、本を読み終わった後で、なんとなく、色々とメモに書いていたような気がしたら、
結果として、ちょっと振り返ってみようか、などと思い立つこともある、というだけの話なのかもしれません。

ともあれ、こうやって、一つずつページを開いていけば、特定の書籍に関する「読書メモ」を、順番に見ていくことができるというわけです。

Notion からメモを抽出してみる

しかし、各タスクのページを、いちいち順番に開いて読んでいくのは、結構、面倒ですよね。

まぁ、軽く読むだけなら、それほどでもないかもしれませんが、
場合によっては、全てのメモを1ページにまとめたい、というようなこともあるのではないでしょうか?

そもそも、最初から、ルーチンやプロジェクトのページにメモを追記していく方針を採っていれば、一つのページを見るだけで事足りたのですが、
その辺りのページの使い分けは、人によって大きく異なるので、どうしても、タスクページにメモりたいということもあると思います。

また、どうしても、外部へ出力したいということも。

そんな時は、Notion API を使って、全ての「読書メモ」の文章を、抽出してきてしまうのがオススメで、
お分かりの通り、これこそが、この記事を本マガジンに含めた理由ですね。

例えば、GAS で、以下のようなコードを実行すると、特定の条件に当てはまるページの内容を、順番に取得していくことができます。

function getParagraph() {
  const filter = { "filter": { "and": [
      { "property": "名前", "rich_text": { "contains": "「ToDoリスト」は捨てていい。" } },
      { "property": "ステータス", "status": { "equals": "完了" } }
    ] },
    "sorts": [{ "property": "実行日", "direction": "ascending" }]
  };
  const options = {
    'method': 'post',
    'headers': {
      'Authorization': 'Bearer ntn_XXXXXXXXXX',
      'Content-Type': 'application/json',
      'Notion-Version': '2022-06-28'
    },
    'payload': JSON.stringify(filter)
  };
  const response = UrlFetchApp.fetch('https://api.notion.com/v1/databases/xxxxxxxxxx/query', options);
  const contents = JSON.parse(response.getContentText());
  const results = contents.results;
  results.forEach((result) => {
    const children = getChildrenContents(result.id);
    children.forEach((child) => {
      if (child.paragraph) {
        console.log(child.paragraph.rich_text[0].plain_text);
      }
    });
  });
}

例によって、コード中の「xxxxxxxxxx」は「タスクリストデータベースの ID」に、「ntn_XXXXXXXXXX」は Notion API の「シークレット」に、
それぞれ、置き換えておいてください。

まず、今回は、本書のタイトルを名前に含み、ステータスが「完了」のタスクを、実行日順に取得するため、以下のような「filter」を設定しました。

{ "filter": { "and": [
    { "property": "名前", "rich_text": { "contains": "「ToDoリスト」は捨てていい。" } },
    { "property": "ステータス", "status": { "equals": "完了" } }
  ] },
  "sorts": [{ "property": "実行日", "direction": "ascending" }]
}

そして、各ページの内容を取得してくるため、「getChildren()」という別の関数を作成し、利用しているのですが、
こちらは、以前にも、「ルーチンページ」の内容を複製する際に使っていて、実を言うと、初登場ではありません。

とは言え、前とは「シークレット」の渡し方だけ、少し異なります(前は、関数の引数にしていました)し、ここにもコードを掲載しておきましょう。

function getChildren(id) {
  const options = {
    'method': 'get',
    'headers': {
      'Authorization': 'Bearer ntn_XXXXXXXXXX',
      'Notion-Version': '2022-06-28'
    }
  };
  const response = UrlFetchApp.fetch('https://api.notion.com/v1/blocks/' + id + '/children?page_size=100', options);
  const contents = JSON.parse(response.getContentText());
  return contents.results;
}

もちろん、引数を増やして、「getParagraph()」関数から「シークレット」を渡すように変更してもらっても構いませんよ。

ところで、本来、Notion のページには、様々な「ブロック」を配置でき、その種類によって、データの取得方法が、全く違うので、
実は、かなり厄介なのですが、今回の「読書メモ」は、上の画像でも紹介したように、それを見据えて、全て、単純なテキストで書いてあるため、
本プログラムを実行するだけで、以下のように、一行ずつ、容易に取得することができました。

Notion から「読書メモ」を取得してみる

逆に言えば、特殊な種類のブロック、例えば、「箇条書きリスト」や「引用」などは、次のような方法では出力できないので、要注意です。

console.log(child.paragraph.rich_text[0].plain_text);

この辺りのことは、またいずれ、解説していきたいと思っています。

マークダウンファイルとして出力する

抽出したデータを、どういった形式で書き出すかも、自由なのですが、
マークダウンファイルとして出力したいなら、例えば、以下のように、コードを書き換えると良いでしょう。

function getParagraph() {

  ...

  let text = `### 読書メモ\n\n`;
  results.forEach((result) => {
    const children = getChildrenContents(result.id);
    children.forEach((child) => {
      if (child.paragraph) {
        text += `- ${child.paragraph.rich_text[0].plain_text}\n`;
      }
    });
  });
  DriveApp.createFile("「ToDoリスト」は捨てていい。.md", text);
}

もとより、GAS を使っているのであれば、こうして、Google ドライブに保存してしまうというのが、多分、いちばん簡単で、
これは、以前、「日次レビュー」に対して行なったのと、同じ手法ですね。

Google ドライブ( https://drive.google.com/drive/my-drive )上でファイルをプレビューしてみると、次のように表示されましたでしょうか?

Google ドライブでファイルを確認する

また、Google ドライブのアプリをインストールした PC で、「マイドライブ」フォルダを「Obsidian」の「Vault」として指定し、
このファイルを開いてみると、おそらく、以下のようになります。

マークダウンファイルを Obsidian で開く

要するに、これから、ここで、アウトラインを操作するなどして、読書メモを整理していこう、というわけですが、
その結果は、次回にでも(マガジン外の記事で)紹介したいと思っているので、良ければ、引き続き、お付き合いください。

まとめ

今回は、特定の条件でタスクを絞り込み、タスクページの内容(プレーンなテキストで書いたメモ)を、収集する方法について、紹介してみました。

まぁ、「読書メモ」については、上でも少し触れたように、そもそも、書籍ごとに、ルーチンやプロジェクトのページを作成し、
そこに、「箇条書きリスト」や「引用」ブロックなども活用しつつ、どんどん追記していく形で書いていけば良く、
実際、私も、現在、試運転中である、タスクシュートの「少し変わった実装パターン」の環境では、そのような方法を採用するつもりだったりします。

ただし、「読書メモ」に限らず、タスクページの内容を取得してくる手法自体は、他にいくらでも応用が考えられると思うので、
もし、何か必要な時が来たら、是非、この記事のことを思い出して、参考にしてもらえれば幸いです。

ではまた。

いいなと思ったら応援しよう!