```` ```dataviewjs const folderPath = "Adventures/Example Adventure/Session Notes"; const extractTakeaways = (content, startHeader, endHeader) => { const startPattern = new RegExp(`^#+\\s*${startHeader}\\s*`, "im"); const endPattern = new RegExp(`^#+\\s*${endHeader}\\s*`, "im"); const startMatch = content.match(startPattern); const endMatch = content.match(endPattern); if (!startMatch) return null; const startIndex = startMatch.index + startMatch[0].length; const endIndex = endMatch ? endMatch.index : content.length; return content.slice(startIndex, endIndex).replace(/^(#+.*|Notes last touched.*)$/gim, "").trim() || null; }; (async () => { let tableData = await Promise.all(dv.pages(`"${folderPath}"`) .map(async page => { const content = await dv.io.load(page.file.path); const takeaway = content ? extractTakeaways(content, "Takeaways", "Next Session") : null; return takeaway ? [page.file.name, takeaway] : null; })); tableData = tableData.filter(row => row !== null); tableData.sort((a, b) => { const sessionNumberA = parseInt(a[0].match(/Session (\d+)/)?.[1] || 0, 10); const sessionNumberB = parseInt(b[0].match(/Session (\d+)/)?.[1] || 0, 10); return sessionNumberB - sessionNumberA; }); // Slice to get the latest 5 entries after sorting tableData = tableData.slice(0, 5); if (tableData.length > 0) dv.table(["Note", "Takeaway"], tableData); })(); ```