Posted on:February 2, 2025 at 02:30 AM

Obsidian dataviewjs로 저널 글중에서 회사일 단락만 따로 모으기

Obsidian dataviewjs로 저널 글중에서 회사일 단락만 따로 모으기

Obsidian으로 매일 매일 저널을 작성하는데 그 중에 회사일에 관련된 것만 따로 모아서 다른 Page에 보고 싶을 때 다음과 같이 하면 됩니다.

  1. 저널에 회사일에 관련된 단락을 만들어 주세요
## 회사일

- 회의록
- 메일
- 메일
- 메일
- 메일

## 다른일
  1. 회사일을 만들 페이지를 만들어 주세요.
pages/work2025.md
  1. community plugin setting에 가서 “Enable Javascript Queries”를 켜주세요. dataview settings

  2. 회사일을 만들 페이지에 다음 코드를 복사해서 붙여넣으세요


```dataviewjs
const files = dv.pages('"journals/2025"').sort(page => page.file.name);
for (let page of files) {
  try {
    // Get the TFile object
    const tfile = app.vault.getAbstractFileByPath(page.file.path);
    
    if (tfile) {
      // Read the file content
      const content = await app.vault.read(tfile);
      if (content) {
        // Look for 회사일 section
        const workMatch = content.match(/#+.*회사일\n([\s\S]*?)(?=\n#+|$)/i);
        if (workMatch) {
          // Parse date from filename (assuming format YYYY-MM-DD)
          const dateMatch = page.file.name.match(/\d{4}-\d{2}-\d{2}/);
          if (dateMatch) {
            const date = new Date(dateMatch[0]);
            const dayOfWeek = date.toLocaleDateString('en-US', { weekday: 'short' });
            dv.header(3, `[[${page.file.name}]] ${dayOfWeek}`);
          } else {
            dv.header(3, `[[${page.file.name}]]`);
          }
          dv.el("div", workMatch[1].trim());
        }
      }
    }
  } catch (error) {
      dv.paragraph(`Error processing ${page.file.name}: ${error.message}`);
  }
}

그러면 journal/2025디렉토리안에 있는 모든 문서에서 ## 회사일 단락에 적은 모든 글들을 모아서 /pages/work2025에 보이게 됩니다. obsidian result

이 글은 readonly이구요, 고칠려고 하면 저널로 가서 고쳐줘야 합니다.

이렇게 하면 글은 계속 journal에서 써가고, 나중에 일의 진행사항을 한눈에 리뷰하고 싶을 때 유용하게 사용될 수 있습니다.