🗄️ 데이터센터
home
주식거래 데이터
home
🔤

다양한 텍스트 블럭

노션(Notion)에서는 다양한 텍스트 블럭을 활용하여 문서를 구조화할 수 있습니다.

텍스트 블럭의 종류

일반 텍스트 블럭 paragraph: 기본적인 텍스트를 자유롭게 작성하고 편집할 수 있습니다.
제목 블럭 heading_1, heading_2, heading_3: 문서의 구조를 체계적으로 나타내는 계층형 제목을 설정할 수 있습니다.
토글 블럭 toggle: 필요에 따라 내용을 숨기거나 표시할 수 있는 접이식 텍스트 블럭입니다.
인용구 블럭 quote: 참고 자료나 중요한 문장을 인용할 때 시각적으로 구분하여 표시합니다.
콜아웃 블럭 callout: 핵심 내용이나 주의사항을 눈에 띄게 강조할 때 활용합니다.

기본코드

코드스니펫

함수는 페이지 ID텍스트 내용, 그리고 블럭 타입을 입력받아 처리합니다. API 요청에 필요한 인증 정보와 헤더를 설정하고, JSON 형식으로 데이터를 구성하여 노션 서버에 전송합니다. 요청이 성공적으로 처리되면 지정된 페이지에 새로운 텍스트 블럭이 추가되고, 실패할 경우 오류 메시지가 출력됩니다.
이 코드를 활용하면 일반 텍스트뿐만 아니라 제목, 토글, 인용구, 콜아웃 등 다양한 형태의 텍스트형식의 블럭을 추가할 수 있습니다.
import requests notionApiKey = '' # 개인 토큰입력 def addTextBlock(pageId, text, blockType="paragraph"): """ 노션 페이지에 텍스트 블럭을 추가하는 함수 pageId (str): 노션 페이지 ID text (str): 추가할 텍스트 내용 blockType (str): 블럭 타입. 다음 중 하나: - paragraph: 일반 텍스트 - heading_1: 큰 제목 - heading_2: 중간 제목 - heading_3: 작은 제목 - toggle: 토글 블럭 - quote: 인용구 - callout: 콜아웃 """ headers = { "Authorization": f"Bearer {notionApiKey}", "Content-Type": "application/json", "Notion-Version": "2022-06-28" } data = { "children": [{ "object": "block", "type": blockType, f"{blockType}": { "rich_text": [{"type": "text", "text": {"content": text}}] } }] } url = f"https://api.notion.com/v1/blocks/{pageId}/children" response = requests.patch(url, headers=headers, json=data) print(f"{blockType} 추가!" if response.status_code == 200 else f"{blockType} 추가 실패: {response.status_code}") # 사용 예시 pageId = '1658844c10b7807b8391d5a11e7a4dff' # 페이지ID addTextBlock(pageId, "안녕하세요!", "paragraph") # 일반 텍스트
Python
복사

실행결과

스타일과 링크

노션 블록에는 다양한 스타일을 추가할 수 있습니다. 컬러, 볼드, 언더라인 등의 스타일 옵션을 적용하기 위한 설정이 필요합니다.

코드스니펫

이 함수는 텍스트 블럭에 다양한 스타일을 적용할 수 있도록 개선되었습니다. 주요 기능은 다음과 같습니다
텍스트 스타일링: 굵게(bold), 기울임(italic), 밑줄(underline), 취소선(strikethrough), 코드(code) 등의 기본 스타일을 적용할 수 있습니다.
색상 설정: 텍스트 색상(color)과 배경 색상(background)을 지정할 수 있습니다.
링크 추가: 텍스트에 하이퍼링크를 포함시킬 수 있습니다.
이러한 스타일 옵션들은 kwargs 매개변수를 통해 딕셔너리 형태로 전달되며, 함수 내부에서 각각의 옵션을 처리하여 노션 API가 요구하는 형식으로 변환됩니다.
import requests # notionApiKey = '' # 개인 토큰 입력 def addTextBlock(pageId, text, blockType="paragraph", **kwargs): """ 노션 페이지에 텍스트 블럭을 추가하는 함수 (스타일 + 링크 추가 가능) 매개변수: - pageId (str): 노션 페이지 ID - text (str): 추가할 텍스트 내용 - blockType (str): 블럭 타입 (예: paragraph, heading_1, heading_2, heading_3, toggle, quote, callout) - **kwargs: 텍스트 스타일 및 링크 관련 옵션 - link (url): 텍스트에 포함할 링크 - 텍스트 스타일(True/False) : bold, italic, underline, strikethrough, code (bool) - color ('컬러색상'): 텍스트 색상 (기본값: "default") - background ('배경색상'): 배경 색상 (기본값 없음) """ headers = { "Authorization": f"Bearer {notionApiKey}", "Content-Type": "application/json", "Notion-Version": "2022-06-28" } # annotations 생성 annotations = {key: kwargs.get(key, False) for key in ["bold", "italic", "underline", "strikethrough", "code"]} annotations["color"] = kwargs.get("color", "default") if "background" in kwargs: annotations["color"] = f"{annotations['color']}_background" # richText 생성 richText = { "type": "text", "text": { "content": text, "link": {"url": kwargs.get("link")} if "link" in kwargs else None }, "annotations": annotations } # 데이터 구성 data = { "children": [{ "object": "block", "type": blockType, f"{blockType}": { "rich_text": [{ "type": "text", "text": { "content": text, "link": {"url": kwargs.get("link")} if "link" in kwargs else None }, "annotations": annotations }] } }] } # API 요청 url = f"https://api.notion.com/v1/blocks/{pageId}/children" response = requests.patch(url, headers=headers, json=data) # 결과 출력 print(f"{blockType} 추가 성공!" if response.status_code == 200 else f"{blockType} 추가 실패: {response.status_code}, {response.json()}")
Python
복사

실행방법 및 실행 결과

사용 가능한 색상 옵션은 다음과 같습니다
default - 기본 텍스트 색상
gray - 회색
brown - 갈색
orange - 주황색
yellow - 노란색
green - 초록색
blue - 파란색
purple - 보라색
pink - 분홍색
red - 빨간색
배경색 설정 방법
color 매개변수만 사용: color="blue" - 텍스트 색상
background 매개변수 사용: background="blue" - 배경색으로 자동 변환
텍스트 스타일 설정 방법
bold=True - 굵은 텍스트
italic=True - 기울임꼴 텍스트
underline=True - 밑줄 텍스트
strikethrough=True - 취소선 텍스트
code=True - 코드 스타일 텍스트
링크 설정 방법
link="https://example.com" - 텍스트에 하이퍼링크 추가
여러 스타일 동시 적용
여러 매개변수를 함께 사용하여 복합적인 스타일 적용 가능: bold=True, color="blue", underline=True
# 기본 텍스트 블록 addTextBlock( pageId="1658844c10b7807b8391d5a11e7a4dff", text="기본 텍스트 블록입니다.", blockType="paragraph" ) # 굵고 파란 텍스트 addTextBlock( pageId="1658844c10b7807b8391d5a11e7a4dff", text="굵고 파란 텍스트입니다.", blockType="paragraph", bold=True, color="blue" ) # 링크가 포함된 텍스트 addTextBlock( pageId="1658844c10b7807b8391d5a11e7a4dff", text="링크가 포함된 텍스트입니다.", blockType="paragraph", link="https://example.com", italic=True ) # 큰 제목 블록 addTextBlock( pageId="1658844c10b7807b8391d5a11e7a4dff", text="빨간 밑줄이 있는 큰 제목입니다.", blockType="heading_1", underline=True, color="red" ) # 복합 스타일 블록 addTextBlock( pageId="1658844c10b7807b8391d5a11e7a4dff", text="취소선과 밑줄이 적용된 텍스트입니다.", blockType="paragraph", strikethrough=True, underline=True, color="green_background" )
Python
복사