WorkSpace와 연결하기
workspace에 접속을 한 뒤 해당 워크스페이스와 Integrations를 연결해줘야 합니다.
1.
우측 상단 … 버튼을 눌러주도록 합니다.
2.
연결에서 연결 추가를 클릭 한 뒤 기존에 만들었던 Integrations를 검색해서 추가해주도록 합니다.
3.
연결 완료 시 아래 이미지와 같이 연결에 항목이 추가됩니다.
Table을 통해서 Database 만들기
노션에서 테이블 생성을 할 시 아래와 같이 데이터베이스를 만들 수 있습니다.
해당 테이블은 index를 추가하거나 삭제할수도 있으며 추후 API를 통해 검색이 가능합니다.
API 호출 하기
Notion API는 다양한 영역으로 나눠서 Notion의 정보를 가져오도록 하고있습니다.
1.
Database
2.
Page
3.
Block
4.
Comments
5.
Users
6.
Search
또한 공식문서에서 JS와 Shell 버전 예시 두가지가 제공되고 있습니다.
Object 리턴 값
{
"object": "page" // page, block, comment 등,
"id": "7a793800-3e55-4d5e-8009-2261de026179", // id
"parent": { // 출처
"type": "page_id",
"page_id": "5c6a2821-6bb1-4a7e-b6e1-c50111515c3d"
},
"discussion_id": "f4be6752-a539-4da2-a8a9-c3953e13bc0b",
"created_time": "2022-07-15T21:17:00.000Z",
"last_edited_time": "2022-07-15T21:17:00.000Z",
"created_by": {
"object": "user",
"id": "e450a39e-9051-4d36-bc4e-8581611fc592"
},
"heading_2": [ // 엔터가 나오기 전까지 블록
// page의 경우 properites가 나옴
// comments의 경우 rich_text가 바로 나옴
"rich_text": [{ // 한 줄에도 여러 속성이 나올 수 있으므로 array로 넘어옴
"type": "text",
"text": {
"content": "Hello world",
"link": null
},
"annotations": { // text 속성값으로 css값
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false, // 회색 바탕에 빨간 글씨 (ctrl + e)
"color": "default" // notion에서 사용하는 정해진 색
},
"plain_text": "Hello world",
"href": null
}]
]
}
JavaScript
복사
Notion API는 서버에서만 사용하도록 설계되어져 있습니다.
Database
database를 호출하기 위해서는 우선 토큰 값들을 가져와야 합니다.
1.
secrets Token : Integrations 설정 페이지에서 가져올 수 잇습니다.
2.
Database Id : Table페이지에서 공유하기를 누르면 URL이 복사되는데 https://notion.so/databaseId ?v=… 이 나오게 됩니다. 해당 URL에서 database ID라고 적힌 부분이 Id값입니다.
Database Query
import { Client } from '@notionhq/client';
const notion = new Client({auth: process.env.NOTION_KEY});
const databaseId = process.env.NOTION_DATABASE_LIST_ID;
(async () => const response = await notion.databases.query({
database_id: databaseId,
filter: {
propery: 'title',
title: {
equals: '제목입니다'
}
},
sorts: [
{
timestamp: 'created_time',
direction: 'descending',
},
],
}))();
JavaScript
복사
title을 기준으로 리스트 불러오기
이외에도
•
database 생성
•
database 업데이트
•
database 가져오기
API가 존재합니다.
Page
Notion의 글은 크게 2가지 영역으로 나뉘어져 있습니다.
API를 통해서 페이지를 호출할 시 page properties만 호출되어서 속성과 제목 값들을 알 수 있습니다.
const { Client } = require('@notionhq/client');
const notion = new Client({auth: process.env.NOTION_KEY});
(async () => {
// page id를 가져오기 위한 database 호출
const response = await notion.databases.query({
database_id: databaseId,
filter: {
property: 'title',
title: {
equals: title,
},
},
});
const pageId = response.results[0].id;
const page = await notion.pages.retrieve({
page_id: pageId,
});
})();
JavaScript
복사
•
page 가져오기
•
page 생성
•
page 업데이트
•
page 속성 가져오기
API가 존재합니다.
Blocks
Page와 유사하지만 Page호출의 경우 properity만 넘어왔다면 block은 content의 내용이 넘어옵니다.
const { Client } = require('@notionhq/client');
const notion = new Client({auth: process.env.NOTION_KEY});
(async () => {
// page id를 가져오기 위한 database 호출
const response = await notion.databases.query({
database_id: databaseId,
filter: {
property: 'title',
title: {
equals: title,
},
},
});
const pageId = response.results[0].id;
const block = await notion.blocks.children.list({
block_id: pageId,
});
})();
JavaScript
복사
•
block 가져오기
•
block 생성
•
block 업데이트
•
block의 chlidren 호출하기
•
삭제하기
•
children 추가하기
API가 존재합니다.
Comments
Comments는 Notion Page나 Block에 달아 놓은 댓글을 가져오며, 초기 Integrates에서 설정해둔 기능들을 따라갑니다.
const { Client } = require('@notionhq/client');
const notion = new Client({ auth: process.env.NOTION_API_KEY });
(async () => {
const response = await notion.databases.query({
database_id: databaseId,
filter: {
property: 'title',
title: {
equals: title,
},
},
});
const pageId = response.results[0].id;
const response = await notion.comments.list({ block_id: pageId });
console.log(response);
})();
JavaScript
복사
•
Comment 생성
•
Comment 가져오기
API가 존재합니다.
Users
유저의 정보를 가져오는 API입니다.
•
Use 1명의 정보가져오기
•
워크스페이스의 모든 유저 정보 가져오기
•
봇 사용자 검색
API가 존재합니다.
Search
공유되는 모든 페이지, DB, 하위페이지, 하위 DB를 검색합니다. 이는 DB나 페이지 쿼리를 사용하는 경우에 가장 정확한 값을 얻을 수 있습니다.
•
정보 찾기
API가 존재합니다.