Home
home

Counting all pages

현재 블로그에 구성된 전체 노션 페이지 수를 카운팅해서 확인해 보고 싶었음.
수동으로 확인하는 것은 모양빠지니… 코드를 통해 확인하는 작업을 수행
현재 구성된 데이터베이스를 모아둔 Migration 페이지에서 카운팅을 수행
3개의 데이터베이스의 테이블 수를 확인해서 값을 추출하고 합산
동작 확인
⇒ 토글을 열기 전에는 “전체 페이지 수 계산 중”으로 표현
⇒ 토글을 열면 “전체 페이지 수: “ 표현
코드 확인
<script> // 모든 토글 열기/닫기 function toggleAll() { const toggles = document.querySelectorAll(".notion-toggle-block"); toggles.forEach(toggle => { const toggleButton = toggle.querySelector("svg.triangle"); if (toggleButton) { const parent = toggleButton.parentElement; const isExpanded = parent.getAttribute("aria-expanded") === "true"; parent.click(); // 토글 상태 전환 } }); // 3초 지연 후 카운팅 실행 setTimeout(() => { waitForContentLoad(() => { updatePageCount(); }); }, 3000); } // 테이블 컨텐츠 로딩을 기다리는 함수 function waitForContentLoad(callback) { let attempts = 0; // 시도 횟수 제한 const interval = setInterval(() => { const tableContainers = document.querySelectorAll('.notion-table-view'); let allTablesLoaded = true; tableContainers.forEach(table => { const collectionItems = table.querySelectorAll('.notion-collection-item'); if (collectionItems.length === 0) { allTablesLoaded = false; } }); if (allTablesLoaded || attempts > 10) { clearInterval(interval); callback(); // 콜백 실행 } attempts++; }, 300); // 300ms 간격으로 DOM 체크 } // 페이지 수 업데이트 함수 function updatePageCount() { const tableContainers = document.querySelectorAll('.notion-table-view'); let totalPageCount = 0; tableContainers.forEach(table => { const collectionItems = table.querySelectorAll('.notion-collection-item'); totalPageCount += collectionItems.length; }); const pageCountElement = document.getElementById('page-count'); if (pageCountElement) { if (totalPageCount > 0) { pageCountElement.textContent = `전체 페이지 수: ${totalPageCount}`; } else { pageCountElement.textContent = "전체 페이지 수를 계산 중... (토글이 열리면 계산됩니다.)"; } } } // DOM 로드 후 초기 메시지 설정 document.addEventListener("DOMContentLoaded", function () { const pageCountElement = document.getElementById("page-count"); pageCountElement.textContent = "전체 페이지 수를 계산 중... (토글이 열리면 계산됩니다.)"; }); </script>
HTML
복사
데이터베이스 테이블에 표출할 수 있는 수량이 최대 100개로 제한되는데… 이때는 어떻게 카운팅하지?? (Notion API??) 이건 먼 훗날 이야기니… 일단 이부분은 나중에 생각하자!!!