[245] 옵시디언 노트 내에 외부 파일 목록을 표로 포함하고 열기 옵션을 제공하는 방법

알림
|
X

페이지 정보

작성자 shunnna 211.♡.199.52
작성일 2024.12.17 09:32
176 조회
0 추천

본문



Rainer는 Obsidian에서 외부 폴더의 파일 목록을 테이블로 표시하고, 시스템 기본 설정으로 해당 파일을 열 수 있는 방법을 찾고 있었습니다. 그는 Dataview 플러그인이 외부 파일/폴더를 지원하지 않는 한계를 이해하며, 심볼릭 링크 방법을 시도했으나 완벽히 작동하지 않았습니다. 이에, JavaScript와 DataviewJS를 활용하여 외부 폴더의 파일을 테이블 형식으로 표시하고 링크를 통해 열 수 있는 스크립트를 작성했습니다. 이 스크립트는 하위 디렉토리와.md파일을 제외하며, 사용자가 지정한 폴더 경로에서 작동합니다.


Rhino

는 테이블 내에서 외부 파일 링크가 제대로 작동하지 않는 문제를 제기하며, 링크 형식에

<file:///>

구문을 추가하면 해결된다고 설명했습니다. 이 형식은 테이블 외부에서는 필요 없지만, 테이블 내부에서는 필수적입니다.


Obsidian에서 구현하는 방법과 스크립트

Rainer의 스크립트 구현

Rainer가 작성한 스크립트는 Node.js의fspath모듈을 사용하여 지정된 폴더의 파일 목록을 읽고, DataviewJS를 통해 Markdown 테이블로 출력합니다. 아래는 수정 및 최적화된 코드입니다:


// 필요한 모듈 선언

const folderPath = "C:/Users/YourPath/Business cases/"; // 폴더 경로 설정

const fs = require('fs');

const path = require('path');


try {

// 지정된 폴더의 파일 읽기

const files = fs.readdirSync(folderPath);


// Markdown 테이블 생성

let table = `| **File Name** | **Extension** | **Link** |\n|---|---|---|\n`;


files.forEach(file => {

const fullPath = path.join(folderPath, file);

const fileExtension = path.extname(file);

const fileName = path.basename(file, fileExtension);


// 하위 디렉토리 및 .md 파일 제외

if (fileExtension === "" || fileExtension === ".md") return;


// 테이블 행 추가

table += `| ${fileName} | ${fileExtension} | [Open](<file:///${fullPath.replace(/\\/g, '/')}>) |\n`;

});


// DataviewJS를 통해 테이블 렌더링

dv.paragraph(table);

} catch (error) {

console.error("Error reading folder:", error);

dv.paragraph("Error reading the folder. Please check the folder path.");

}


Rhino의 수정안 반영

Rhino는 외부 파일 링크가 테이블 내에서 작동하려면<file:///>형식을 사용해야 한다고 언급했습니다. 따라서 위 코드에서도 링크 부분에<file:///>구문을 추가하여 수정하였습니다.

주요 구현 단계

  1. 폴더 경로 설정:folderPath변수에 외부 파일이 위치한 경로를 절대 경로로 입력합니다.
  2. Node.js 모듈 사용:fs.readdirSync를 통해 폴더 내용을 읽고,path모듈로 파일 이름과 확장자를 처리합니다.
  3. Markdown 테이블 생성: 파일 이름과 확장자를 기반으로 테이블 구조를 생성하며, 링크는<file:///>형식을 사용합니다.
  4. DataviewJS 출력:dv.paragraph()를 통해 Obsidian 노트 내에 테이블을 렌더링합니다.

추가 고려 사항

  • 보안 및 경로 확인: 외부 경로가 정확하고 접근 가능한지 확인해야 합니다.
  • 플러그인 설치: Dataview 플러그인이 설치되어 있어야 스크립트가 정상적으로 작동합니다.
  • OS 호환성: Windows 환경에서는 경로 구분자로 백슬래시(\) 대신 슬래시(/)를 사용해야 합니다.

이 스크립트를 활용하면 Obsidian 노트에서 외부 폴더의 파일 목록을 동적으로 관리할 수 있습니다. Rhino가 제안한 수정안을 포함하여 외부 파일 링크 문제도 해결되었습니다.


인용:

[1] External File Links Not Opening from Within a Table Cell - Helphttps://forum.obsidian.md/t/external-file-links-not-opening-from-within-a-table-cell/63774

[2] Embedding a list of External Files as a table within a Note, with an ...https://forum.obsidian.md/t/embedding-a-list-of-external-files-as-a-table-within-a-note-with-an-option-to-open/93169

[3] Embed internal images in dataviewjs table from frontmatter? - Helphttps://forum.obsidian.md/t/embed-internal-images-in-dataviewjs-table-from-frontmatter/74648

[4] CSV-backed data table idea - Plugins ideas - Obsidian Forumhttps://forum.obsidian.md/t/csv-backed-data-table-idea/645

[5] Is there a way to embed external markdown in Obsidian - Helphttps://forum.obsidian.md/t/is-there-a-way-to-embed-external-markdown-in-obsidian/42311

[6] External PDF files - GitHub Pageshttps://ryotaushio.github.io/obsidian-pdf-plus/external-pdf-files.html

[7] Embed Files/File Storage? : r/ObsidianMD - Reddithttps://www.reddit.com/r/ObsidianMD/comments/v95h89/embed_filesfile_storage/

[8] Insert/Embed other file formats like .xlsx and .docx (but not limited to ...https://forum.obsidian.md/t/insert-embed-other-file-formats-like-xlsx-and-docx-but-not-limited-to-in-addition-to-pdf-and-images/3418?page=3

댓글 0
홈으로 전체메뉴 마이메뉴 새글/새댓글
전체 검색