Daily Task Automator (+ Notion API with Python) – Tutorial

Notion API (2 Part Series)

1 Daily Task Automator (+ Notion API with Python) – Tutorial
2 How to Track Gumroad Sales in Notion Using Notion API and Python

In this tutorial, I’ll show you how to set your own Task Automation System with Notion and Python.

Brief Introduction:

We have to follow these two main steps:

  1. Notion integration setup
  2. Python code setup

The link between these two steps, lie in the magic of Notion API.

If you’re new to Notion API and Notion Integration itself, I’ll explain how you can get started with it in this tutorial.

Want the Notion Template? Get it here!

If you dont have access to the notion template yet, get it here

Now that you’ve gotten your hands on this template and duplicated into your workspace, let’s get started:

The Notion integration setup

This step ensures the python script makes updates to the right notion database.

To ensure this, the python code needs to first ‘identify’ the notion database so that it can ‘talk’ to it.

Each notion database has a unique id that is part of the url link.

To make this process easier, we can create a ‘secret token’ that can be used to connect to your notion database.

Let’s do just that,

1. Create notion integration secret token

If you haven’t already, create a free Notion Account

  1. Go to https://notion.so/my-integrations/

  2. Click + New Integration button

  1. Give name My Notion Task Automator and submit

)

  1. Show and copy secret token (keep it aside safely)

  1. Click Save Changes

Copy and keep the notion integration secret token so that you can later share it to your python script.

2. Connect it to the notion page

  1. Click ... on the top right corner

  1. Click on Add Connections and search and select the newly created Notion Integration

3. Create tasks to automatically populate everyday

Let’s start with a simple habit,

“Doing 10 pushups at 10:30 AM — everyday of the week”

In Task Definition notion database, click + new, and create a new task:

  1. Task Name Perform 10 Pushups
  2. Date 10:30 AM (any date but time should be 10:30 AM)
  3. Days of the week (Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)

Here is how it will look like,

Tasks into the Task Definition database](/2.png)

Woo-hoo! Look at you!

Now let’s focus on running the python script. Jumping right in:

The Python code setup

To do this, you don’t have to run python on your PC or laptop.

You can:

1. Create a free account on Replit and login,

2. Copy and paste the python code

Copy the below python code:

<span>import</span> <span>requests</span>
<span>import</span> <span>json</span>
<span>from</span> <span>datetime</span> <span>import</span> <span>date</span>
<span>import</span> <span>calendar</span>
<span>import</span> <span>os</span>
<span>import</span> <span>dateutil.parser</span>
<span>import</span> <span>datetime</span>
<span>class</span> <span>MyNotionIntegration</span><span>:</span>
<span>def</span> <span>__init__</span><span>(</span><span>self</span><span>):</span>
<span>self</span><span>.</span><span>headers</span> <span>=</span> <span>{</span>
<span>'Content-Type'</span><span>:</span> <span>'application/json'</span><span>,</span>
<span>'Notion-Version'</span><span>:</span> <span>'2021-05-13'</span><span>,</span>
<span>'Authorization'</span><span>:</span> <span>f</span><span>'Bearer </span><span>{</span><span>os</span><span>.</span><span>getenv</span><span>(</span><span>"NOTION_DAILY_TASK_SCHEDULER_INTEGRATION_SECRET"</span><span>)</span><span>}</span><span>'</span>
<span>}</span>
<span>self</span><span>.</span><span>read_db</span> <span>=</span> <span>self</span><span>.</span><span>write_db</span> <span>=</span> <span>self</span><span>.</span><span>list_of_tasks</span> <span>=</span> <span>None</span>
<span>@</span><span>staticmethod</span>
<span>def</span> <span>getSameTimeButToday</span><span>(</span><span>date_string</span><span>):</span>
<span>if</span> <span>not</span> <span>date_string</span><span>:</span>
<span>return</span>
<span>iso_parser</span> <span>=</span> <span>dateutil</span><span>.</span><span>parser</span><span>.</span><span>isoparse</span><span>(</span><span>date_string</span><span>)</span>
<span>today_date_obj</span> <span>=</span> <span>iso_parser</span><span>.</span><span>replace</span><span>(</span>
<span>day</span><span>=</span><span>datetime</span><span>.</span><span>datetime</span><span>.</span><span>now</span><span>().</span><span>day</span><span>,</span>
<span>month</span><span>=</span><span>datetime</span><span>.</span><span>datetime</span><span>.</span><span>now</span><span>().</span><span>month</span><span>,</span>
<span>year</span><span>=</span><span>datetime</span><span>.</span><span>datetime</span><span>.</span><span>now</span><span>().</span><span>year</span><span>,</span>
<span>)</span>
<span>return</span> <span>today_date_obj</span><span>.</span><span>isoformat</span><span>(</span><span>'T'</span><span>)</span>
<span>def</span> <span>getReadAndWriteDBs</span><span>(</span><span>self</span><span>,</span> <span>name</span><span>=</span><span>None</span><span>):</span>
<span>if</span> <span>not</span> <span>name</span><span>:</span>
<span>name</span> <span>=</span> <span>"TASKS TEMPLATE"</span>
<span>url</span> <span>=</span> <span>"https://api.notion.com/v1/search/"</span>
<span>payload</span> <span>=</span> <span>json</span><span>.</span><span>dumps</span><span>({</span>
<span>"filter"</span><span>:</span> <span>{</span>
<span>"property"</span><span>:</span> <span>"object"</span><span>,</span>
<span>"value"</span><span>:</span> <span>"database"</span>
<span>}</span>
<span>})</span>
<span>response</span> <span>=</span> <span>requests</span><span>.</span><span>request</span><span>(</span><span>"POST"</span><span>,</span> <span>url</span><span>,</span> <span>headers</span><span>=</span><span>self</span><span>.</span><span>headers</span><span>,</span> <span>data</span><span>=</span><span>payload</span><span>)</span>
<span>databases</span> <span>=</span> <span>response</span><span>.</span><span>json</span><span>().</span><span>get</span><span>(</span><span>'results'</span><span>)</span>
<span>for</span> <span>database</span> <span>in</span> <span>databases</span><span>:</span>
<span>if</span> <span>database</span><span>.</span><span>get</span><span>(</span><span>'title'</span><span>)[</span><span>0</span><span>].</span><span>get</span><span>(</span><span>'text'</span><span>).</span><span>get</span><span>(</span><span>'content'</span><span>).</span><span>upper</span><span>()</span> <span>==</span> <span>name</span><span>:</span>
<span>self</span><span>.</span><span>read_db</span> <span>=</span> <span>database</span>
<span>else</span><span>:</span>
<span>self</span><span>.</span><span>write_db</span> <span>=</span> <span>database</span>
<span>def</span> <span>getTodaysTasks</span><span>(</span><span>self</span><span>):</span>
<span>url</span> <span>=</span> <span>f</span><span>"https://api.notion.com/v1/databases/</span><span>{</span><span>self</span><span>.</span><span>read_db</span><span>.</span><span>get</span><span>(</span><span>'id'</span><span>)</span><span>}</span><span>/query"</span>
<span>payload</span> <span>=</span> <span>json</span><span>.</span><span>dumps</span><span>({</span>
<span>"filter"</span><span>:</span> <span>{</span>
<span>"property"</span><span>:</span> <span>"Day of the Week"</span><span>,</span>
<span>"multi_select"</span><span>:</span> <span>{</span>
<span>"contains"</span><span>:</span> <span>calendar</span><span>.</span><span>day_name</span><span>[</span><span>date</span><span>.</span><span>today</span><span>().</span><span>weekday</span><span>()]</span>
<span>}</span>
<span>}</span>
<span>})</span>
<span>response</span> <span>=</span> <span>requests</span><span>.</span><span>request</span><span>(</span><span>"POST"</span><span>,</span> <span>url</span><span>,</span> <span>headers</span><span>=</span><span>self</span><span>.</span><span>headers</span><span>,</span> <span>data</span><span>=</span><span>payload</span><span>)</span>
<span>self</span><span>.</span><span>list_of_tasks</span> <span>=</span> <span>response</span><span>.</span><span>json</span><span>().</span><span>get</span><span>(</span><span>'results'</span><span>)</span>
<span>def</span> <span>createTasks</span><span>(</span><span>self</span><span>):</span>
<span>url</span> <span>=</span> <span>"https://api.notion.com/v1/pages/"</span>
<span>for</span> <span>task</span> <span>in</span> <span>self</span><span>.</span><span>list_of_tasks</span><span>:</span>
<span>print</span><span>(</span><span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Date'</span><span>).</span><span>get</span><span>(</span><span>'date'</span><span>).</span><span>get</span><span>(</span><span>'start'</span><span>))</span>
<span>payload</span> <span>=</span> <span>json</span><span>.</span><span>dumps</span><span>({</span>
<span>"parent"</span><span>:</span> <span>{</span>
<span>"type"</span><span>:</span> <span>"database_id"</span><span>,</span>
<span>"database_id"</span><span>:</span> <span>self</span><span>.</span><span>write_db</span><span>.</span><span>get</span><span>(</span><span>'id'</span><span>),</span>
<span>},</span>
<span>"icon"</span><span>:</span> <span>task</span><span>.</span><span>get</span><span>(</span><span>'icon'</span><span>),</span>
<span>"properties"</span><span>:</span> <span>{</span>
<span>"Due For"</span><span>:</span> <span>{</span>
<span>"type"</span><span>:</span> <span>"date"</span><span>,</span>
<span>"date"</span><span>:</span> <span>{</span>
<span>"start"</span><span>:</span> <span>self</span><span>.</span><span>getSameTimeButToday</span><span>(</span>
<span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Date'</span><span>).</span><span>get</span><span>(</span><span>'date'</span><span>).</span><span>get</span><span>(</span><span>'start'</span><span>)</span>
<span>),</span>
<span>"end"</span><span>:</span> <span>self</span><span>.</span><span>getSameTimeButToday</span><span>(</span>
<span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Date'</span><span>).</span><span>get</span><span>(</span><span>'date'</span><span>).</span><span>get</span><span>(</span><span>'end'</span><span>)</span>
<span>),</span>
<span>}</span>
<span>},</span>
<span>"Task"</span><span>:</span> <span>{</span>
<span>"type"</span><span>:</span> <span>"title"</span><span>,</span>
<span>"title"</span><span>:</span> <span>[</span>
<span>{</span>
<span>"type"</span><span>:</span> <span>"text"</span><span>,</span>
<span>"text"</span><span>:</span> <span>{</span>
<span>"content"</span><span>:</span> <span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Name'</span><span>).</span><span>get</span><span>(</span><span>'title'</span><span>)[</span><span>0</span><span>].</span><span>get</span><span>(</span><span>'plain_text'</span><span>),</span>
<span>},</span>
<span>"plain_text"</span><span>:</span> <span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Name'</span><span>).</span><span>get</span><span>(</span><span>'title'</span><span>)[</span><span>0</span><span>].</span><span>get</span><span>(</span><span>'plain_text'</span><span>),</span>
<span>}</span>
<span>]</span>
<span>}</span>
<span>}</span>
<span>})</span>
<span>response</span> <span>=</span> <span>requests</span><span>.</span><span>request</span><span>(</span><span>"POST"</span><span>,</span> <span>url</span><span>,</span> <span>headers</span><span>=</span><span>self</span><span>.</span><span>headers</span><span>,</span> <span>data</span><span>=</span><span>payload</span><span>)</span>
<span>print</span><span>(</span><span>f</span><span>"HTTP Status </span><span>{</span><span>response</span><span>.</span><span>status_code</span><span>}</span><span>"</span><span>,</span> <span>response</span><span>.</span><span>text</span><span>)</span>
<span>def</span> <span>RunWorkflow</span><span>(</span><span>self</span><span>):</span>
<span>self</span><span>.</span><span>getReadAndWriteDBs</span><span>()</span>
<span>self</span><span>.</span><span>getTodaysTasks</span><span>()</span>
<span>self</span><span>.</span><span>createTasks</span><span>()</span>
<span>if</span> <span>__name__</span> <span>==</span> <span>"__main__"</span><span>:</span>
<span>MyNotionIntegration</span><span>().</span><span>RunWorkflow</span><span>()</span>
<span>import</span> <span>requests</span>
<span>import</span> <span>json</span>
<span>from</span> <span>datetime</span> <span>import</span> <span>date</span>
<span>import</span> <span>calendar</span>
<span>import</span> <span>os</span>
<span>import</span> <span>dateutil.parser</span>
<span>import</span> <span>datetime</span>


<span>class</span> <span>MyNotionIntegration</span><span>:</span>

    <span>def</span> <span>__init__</span><span>(</span><span>self</span><span>):</span>
      <span>self</span><span>.</span><span>headers</span> <span>=</span> <span>{</span>
        <span>'Content-Type'</span><span>:</span> <span>'application/json'</span><span>,</span>
        <span>'Notion-Version'</span><span>:</span> <span>'2021-05-13'</span><span>,</span>
        <span>'Authorization'</span><span>:</span> <span>f</span><span>'Bearer </span><span>{</span><span>os</span><span>.</span><span>getenv</span><span>(</span><span>"NOTION_DAILY_TASK_SCHEDULER_INTEGRATION_SECRET"</span><span>)</span><span>}</span><span>'</span>
      <span>}</span>
      <span>self</span><span>.</span><span>read_db</span> <span>=</span> <span>self</span><span>.</span><span>write_db</span> <span>=</span> <span>self</span><span>.</span><span>list_of_tasks</span> <span>=</span> <span>None</span>

    <span>@</span><span>staticmethod</span>
    <span>def</span> <span>getSameTimeButToday</span><span>(</span><span>date_string</span><span>):</span>
      <span>if</span> <span>not</span> <span>date_string</span><span>:</span>
        <span>return</span>
      <span>iso_parser</span> <span>=</span> <span>dateutil</span><span>.</span><span>parser</span><span>.</span><span>isoparse</span><span>(</span><span>date_string</span><span>)</span>
      <span>today_date_obj</span> <span>=</span> <span>iso_parser</span><span>.</span><span>replace</span><span>(</span>
        <span>day</span><span>=</span><span>datetime</span><span>.</span><span>datetime</span><span>.</span><span>now</span><span>().</span><span>day</span><span>,</span>
        <span>month</span><span>=</span><span>datetime</span><span>.</span><span>datetime</span><span>.</span><span>now</span><span>().</span><span>month</span><span>,</span>
        <span>year</span><span>=</span><span>datetime</span><span>.</span><span>datetime</span><span>.</span><span>now</span><span>().</span><span>year</span><span>,</span>
      <span>)</span>
      <span>return</span> <span>today_date_obj</span><span>.</span><span>isoformat</span><span>(</span><span>'T'</span><span>)</span>

    <span>def</span> <span>getReadAndWriteDBs</span><span>(</span><span>self</span><span>,</span> <span>name</span><span>=</span><span>None</span><span>):</span>
      <span>if</span> <span>not</span> <span>name</span><span>:</span>
        <span>name</span> <span>=</span> <span>"TASKS TEMPLATE"</span>
      <span>url</span> <span>=</span> <span>"https://api.notion.com/v1/search/"</span>
      <span>payload</span> <span>=</span> <span>json</span><span>.</span><span>dumps</span><span>({</span>
        <span>"filter"</span><span>:</span> <span>{</span>
          <span>"property"</span><span>:</span> <span>"object"</span><span>,</span>
          <span>"value"</span><span>:</span> <span>"database"</span>
        <span>}</span>
      <span>})</span>
      <span>response</span> <span>=</span> <span>requests</span><span>.</span><span>request</span><span>(</span><span>"POST"</span><span>,</span> <span>url</span><span>,</span> <span>headers</span><span>=</span><span>self</span><span>.</span><span>headers</span><span>,</span> <span>data</span><span>=</span><span>payload</span><span>)</span>
      <span>databases</span> <span>=</span> <span>response</span><span>.</span><span>json</span><span>().</span><span>get</span><span>(</span><span>'results'</span><span>)</span>
      <span>for</span> <span>database</span> <span>in</span> <span>databases</span><span>:</span>
        <span>if</span> <span>database</span><span>.</span><span>get</span><span>(</span><span>'title'</span><span>)[</span><span>0</span><span>].</span><span>get</span><span>(</span><span>'text'</span><span>).</span><span>get</span><span>(</span><span>'content'</span><span>).</span><span>upper</span><span>()</span> <span>==</span> <span>name</span><span>:</span>
          <span>self</span><span>.</span><span>read_db</span> <span>=</span> <span>database</span>
        <span>else</span><span>:</span>
          <span>self</span><span>.</span><span>write_db</span> <span>=</span> <span>database</span>

    <span>def</span> <span>getTodaysTasks</span><span>(</span><span>self</span><span>):</span>
      <span>url</span> <span>=</span> <span>f</span><span>"https://api.notion.com/v1/databases/</span><span>{</span><span>self</span><span>.</span><span>read_db</span><span>.</span><span>get</span><span>(</span><span>'id'</span><span>)</span><span>}</span><span>/query"</span>
      <span>payload</span> <span>=</span> <span>json</span><span>.</span><span>dumps</span><span>({</span>
        <span>"filter"</span><span>:</span> <span>{</span>
          <span>"property"</span><span>:</span> <span>"Day of the Week"</span><span>,</span>
          <span>"multi_select"</span><span>:</span> <span>{</span>
             <span>"contains"</span><span>:</span> <span>calendar</span><span>.</span><span>day_name</span><span>[</span><span>date</span><span>.</span><span>today</span><span>().</span><span>weekday</span><span>()]</span>
          <span>}</span>
        <span>}</span>
      <span>})</span>
      <span>response</span> <span>=</span> <span>requests</span><span>.</span><span>request</span><span>(</span><span>"POST"</span><span>,</span> <span>url</span><span>,</span> <span>headers</span><span>=</span><span>self</span><span>.</span><span>headers</span><span>,</span> <span>data</span><span>=</span><span>payload</span><span>)</span>
      <span>self</span><span>.</span><span>list_of_tasks</span> <span>=</span> <span>response</span><span>.</span><span>json</span><span>().</span><span>get</span><span>(</span><span>'results'</span><span>)</span>

    <span>def</span> <span>createTasks</span><span>(</span><span>self</span><span>):</span>
      <span>url</span> <span>=</span> <span>"https://api.notion.com/v1/pages/"</span>
      <span>for</span> <span>task</span> <span>in</span> <span>self</span><span>.</span><span>list_of_tasks</span><span>:</span>
        <span>print</span><span>(</span><span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Date'</span><span>).</span><span>get</span><span>(</span><span>'date'</span><span>).</span><span>get</span><span>(</span><span>'start'</span><span>))</span>
        <span>payload</span> <span>=</span> <span>json</span><span>.</span><span>dumps</span><span>({</span>
          <span>"parent"</span><span>:</span> <span>{</span>
            <span>"type"</span><span>:</span> <span>"database_id"</span><span>,</span>
            <span>"database_id"</span><span>:</span> <span>self</span><span>.</span><span>write_db</span><span>.</span><span>get</span><span>(</span><span>'id'</span><span>),</span>
          <span>},</span>
          <span>"icon"</span><span>:</span> <span>task</span><span>.</span><span>get</span><span>(</span><span>'icon'</span><span>),</span>
          <span>"properties"</span><span>:</span> <span>{</span>
            <span>"Due For"</span><span>:</span> <span>{</span>
              <span>"type"</span><span>:</span> <span>"date"</span><span>,</span>
              <span>"date"</span><span>:</span> <span>{</span>
                <span>"start"</span><span>:</span> <span>self</span><span>.</span><span>getSameTimeButToday</span><span>(</span>
                  <span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Date'</span><span>).</span><span>get</span><span>(</span><span>'date'</span><span>).</span><span>get</span><span>(</span><span>'start'</span><span>)</span>
                <span>),</span>
                <span>"end"</span><span>:</span> <span>self</span><span>.</span><span>getSameTimeButToday</span><span>(</span>
                  <span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Date'</span><span>).</span><span>get</span><span>(</span><span>'date'</span><span>).</span><span>get</span><span>(</span><span>'end'</span><span>)</span>
                <span>),</span>
              <span>}</span>
            <span>},</span>
            <span>"Task"</span><span>:</span> <span>{</span>
              <span>"type"</span><span>:</span> <span>"title"</span><span>,</span>
              <span>"title"</span><span>:</span> <span>[</span>
                <span>{</span>
                  <span>"type"</span><span>:</span> <span>"text"</span><span>,</span>
                  <span>"text"</span><span>:</span> <span>{</span>
                    <span>"content"</span><span>:</span> <span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Name'</span><span>).</span><span>get</span><span>(</span><span>'title'</span><span>)[</span><span>0</span><span>].</span><span>get</span><span>(</span><span>'plain_text'</span><span>),</span>
                  <span>},</span>
                  <span>"plain_text"</span><span>:</span> <span>task</span><span>.</span><span>get</span><span>(</span><span>'properties'</span><span>).</span><span>get</span><span>(</span><span>'Name'</span><span>).</span><span>get</span><span>(</span><span>'title'</span><span>)[</span><span>0</span><span>].</span><span>get</span><span>(</span><span>'plain_text'</span><span>),</span>
                <span>}</span>
              <span>]</span>
            <span>}</span>
          <span>}</span>
        <span>})</span>
        <span>response</span> <span>=</span> <span>requests</span><span>.</span><span>request</span><span>(</span><span>"POST"</span><span>,</span> <span>url</span><span>,</span> <span>headers</span><span>=</span><span>self</span><span>.</span><span>headers</span><span>,</span> <span>data</span><span>=</span><span>payload</span><span>)</span>
        <span>print</span><span>(</span><span>f</span><span>"HTTP Status </span><span>{</span><span>response</span><span>.</span><span>status_code</span><span>}</span><span>"</span><span>,</span> <span>response</span><span>.</span><span>text</span><span>)</span>

    <span>def</span> <span>RunWorkflow</span><span>(</span><span>self</span><span>):</span>
      <span>self</span><span>.</span><span>getReadAndWriteDBs</span><span>()</span>
      <span>self</span><span>.</span><span>getTodaysTasks</span><span>()</span>
      <span>self</span><span>.</span><span>createTasks</span><span>()</span>

<span>if</span> <span>__name__</span> <span>==</span> <span>"__main__"</span><span>:</span>
  <span>MyNotionIntegration</span><span>().</span><span>RunWorkflow</span><span>()</span>
import requests import json from datetime import date import calendar import os import dateutil.parser import datetime class MyNotionIntegration: def __init__(self): self.headers = { 'Content-Type': 'application/json', 'Notion-Version': '2021-05-13', 'Authorization': f'Bearer {os.getenv("NOTION_DAILY_TASK_SCHEDULER_INTEGRATION_SECRET")}' } self.read_db = self.write_db = self.list_of_tasks = None @staticmethod def getSameTimeButToday(date_string): if not date_string: return iso_parser = dateutil.parser.isoparse(date_string) today_date_obj = iso_parser.replace( day=datetime.datetime.now().day, month=datetime.datetime.now().month, year=datetime.datetime.now().year, ) return today_date_obj.isoformat('T') def getReadAndWriteDBs(self, name=None): if not name: name = "TASKS TEMPLATE" url = "https://api.notion.com/v1/search/" payload = json.dumps({ "filter": { "property": "object", "value": "database" } }) response = requests.request("POST", url, headers=self.headers, data=payload) databases = response.json().get('results') for database in databases: if database.get('title')[0].get('text').get('content').upper() == name: self.read_db = database else: self.write_db = database def getTodaysTasks(self): url = f"https://api.notion.com/v1/databases/{self.read_db.get('id')}/query" payload = json.dumps({ "filter": { "property": "Day of the Week", "multi_select": { "contains": calendar.day_name[date.today().weekday()] } } }) response = requests.request("POST", url, headers=self.headers, data=payload) self.list_of_tasks = response.json().get('results') def createTasks(self): url = "https://api.notion.com/v1/pages/" for task in self.list_of_tasks: print(task.get('properties').get('Date').get('date').get('start')) payload = json.dumps({ "parent": { "type": "database_id", "database_id": self.write_db.get('id'), }, "icon": task.get('icon'), "properties": { "Due For": { "type": "date", "date": { "start": self.getSameTimeButToday( task.get('properties').get('Date').get('date').get('start') ), "end": self.getSameTimeButToday( task.get('properties').get('Date').get('date').get('end') ), } }, "Task": { "type": "title", "title": [ { "type": "text", "text": { "content": task.get('properties').get('Name').get('title')[0].get('plain_text'), }, "plain_text": task.get('properties').get('Name').get('title')[0].get('plain_text'), } ] } } }) response = requests.request("POST", url, headers=self.headers, data=payload) print(f"HTTP Status {response.status_code}", response.text) def RunWorkflow(self): self.getReadAndWriteDBs() self.getTodaysTasks() self.createTasks() if __name__ == "__main__": MyNotionIntegration().RunWorkflow()

Enter fullscreen mode Exit fullscreen mode

3. Share the notion integration secret key with the python script

4. Run the script from your browser!

After running the Python script on Replit, you can see that today’s tasks are auto-populated in Task Automator database.

🥳 Nice! You now have a automated todo-list!

Add any habits to the Task Definition database and run the python script on replit (automation) every day to auto generate the todo-list in the Task Automator database.

Thank you

…for being part of this experiment and hope you use this to enhance your productivity

If you dont have access to the notion template yet, get it here

If you liked this product, you’ll probably love my other products which can be found here

Let’s connect on Twitter @TnvMadhav if you don’t wanna miss out on newer projects!

Notion API (2 Part Series)

1 Daily Task Automator (+ Notion API with Python) – Tutorial
2 How to Track Gumroad Sales in Notion Using Notion API and Python

原文链接:Daily Task Automator (+ Notion API with Python) – Tutorial

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
Nobody looks down on you because everybody is too busy to look at you.
没谁瞧不起你,因为别人根本就没瞧你,大家都很忙的
评论 抢沙发

请登录后发表评论

    暂无评论内容