gkeep2notion icon indicating copy to clipboard operation
gkeep2notion copied to clipboard

body.children[9].bulleted_list_item.rich_text[0].text.content.length should be ≤ `2000`, instead was `2174`.

Open marinucs opened this issue 2 years ago • 3 comments

Hello!

First of all, thanks for developing this.

I have encountered this issue, after successfully importing 15 notes. Could you check it out? 🥺

Importing note #14: Parsing 9 blocks Importing note #15: Parsing 3 blocks Importing note #16: Parsing 31 blocks Traceback (most recent call last): File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/notion_client/client.py", line 118, in _parse_response response.raise_for_status() File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/httpx/_models.py", line 749, in raise_for_status raise HTTPStatusError(message, request=request, response=self) httpx.HTTPStatusError: Client error '400 Bad Request' for url 'https://api.notion.com/v1/pages' For more information check: https://httpstatuses.com/400

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "/Users/marinucs/Downloads/gkeep2notion/./gkeep2notion.py", line 440, in create_page(notion, page) File "/Users/marinucs/Downloads/gkeep2notion/./gkeep2notion.py", line 189, in create_page notion_page = notion.pages.create(parent=page.parent, ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/notion_client/api_endpoints.py", line 199, in create return self.parent.request( ^^^^^^^^^^^^^^^^^^^^ File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/notion_client/client.py", line 194, in request return self._parse_response(response) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/Users/marinucs/Library/Python/3.11/lib/python/site-packages/notion_client/client.py", line 126, in _parse_response raise APIResponseError(response, body["message"], code) notion_client.errors.APIResponseError: body failed validation: body.children[9].bulleted_list_item.rich_text[0].text.content.length should be ≤ 2000, instead was 2174.

marinucs avatar Aug 04 '23 10:08 marinucs

def create_page(notion: Client, page: Page) -> Page:
    """Creates a page in Notion and saves page.id"""
    try:
        throttle.wait()
        notion_page = notion.pages.create(parent=page.parent,
                                        properties=page.properties,
                                        children=page.children)
        page.id = notion_page['id']
    except:
        page.id = "your-root-page-id"

    return page

you could add try except into create_page() method

billythekidz avatar Aug 07 '23 05:08 billythekidz

The problem is, each content block in Notion is limited to 2000 characters. The solution is to split it into multiple blocks, which this script typically does if your Keep note has paragraphs.

trustmaster avatar Oct 04 '23 20:10 trustmaster

@marinucs this is fixed in my last PR

hexadeciman avatar Feb 12 '24 21:02 hexadeciman