[2주차] 구글 드라이브에서 파일명 파싱하여 구글 시트에 기록하기

소개

1주차에 기획한 AI 루틴의 앞단계인 1) 구글 드라이브에 파일 업로드 2) 파일명 파싱 3) 이름, 날짜 추출하여 구글 시트에 기록하기 까지 연습해 보았습니다.

진행 방법

기획 GPT를 활용하여 나온 MVP를 그대로 복사하여 GPT에 먼저 이를 구현하기 위한 n8n workflow를 json 파일로 만들어 달라고 요청한 후, 세부적인 수정은 클로드를 활용하였습니다.

그 결과 아직 전체 루틴을 완성하려면 멀었지만 구글 드라이브의 파일을 인식하여 구글 시트에 기록하는 부분까지는 완성하였습니다.

  • n8n workflow

1) Schedule Trigger : 매일 오전 8시로 설정

2) Google Drive - List Files: 내 구글 드라이브의 "영어 낭독 제출"이라는 폴더를 만들고, 이를 search 하는 google drive 노드를 추가했습니다.

3) 파일명 파싱: 이 부분이 가장 어려웠습니다. 음성 파일이라 처음에는 mp3 파일만 인식하게 설정했는데 제가 가지고 있는 음성 파일이 다른 확장자여서 확장자에 상관없이 언더바 앞의 내용은 이름으로 인식하고, 업로드된 날짜를 파싱하게 하였습니다. 중간중간 오류가 많이 발생해서 포기하고 싶었는데, 오류 내용을 계속 클로드에 물어보면서 수정하였습니다.

const items = $input.all();
const processedItems = [];

for (const item of items) {
  const fileName = item.json.name;
  const createdTime = item.json.createdTime;
  
  // 파일명에서 언더바(_) 앞의 이름 추출
  const underscoreIndex = fileName.indexOf('_');
  let parsedName = '';
  
  if (underscoreIndex !== -1) {
    parsedName = fileName.substring(0, underscoreIndex);
  } else {
    // 언더바가 없으면 확장자를 제거한 전체 파일명 사용
    const dotIndex = fileName.lastIndexOf('.');
    parsedName = dotIndex !== -1 ? fileName.substring(0, dotIndex) : fileName;
  }
  
  // 업로드 날짜 파싱
  let uploadDate = new Date().toISOString().split('T')[0]; // 기본값: 오늘 날짜
  
  if (createdTime) {
    if (typeof createdTime === 'string' && createdTime.includes('T')) {
      uploadDate = createdTime.split('T')[0];
    } else if (typeof createdTime === 'string' && createdTime.includes('-')) {
      uploadDate = createdTime.split(' ')[0]; // 'YYYY-MM-DD HH:MM:SS' 형식 처리
    } else {
      const dateObj = new Date(createdTime);
      if (!isNaN(dateObj.getTime())) {
        uploadDate = dateObj.toISOString().split('T')[0];
      }
    }
  }
  
  processedItems.push({
    json: {
      fileName: fileName,
      parsedName: parsedName,
      uploadDate: uploadDate
    }
  });
}

return processedItems;

4) Google Sheets - 데이터 추가: 구글 시트에 파싱한 데이터를 추가하는 노드를 넣었고, 아래와 같이 구글 시트에 데이터가 추가되는 것을 확인했습니다.

결과와 배운 점

execute 할때 마다 중복 데이터도 계속 추가가 되는 것을 확인하여, 중복 데이터는 파일명 기준으로 한번 제거를 할지 아니면 다른 고유값이 있다면 그걸 기준으로 제거하는 노드를 추가해야겠다는 생각이 들었습니다.

주중에 업무로 아예 들여다 보지 못하고 급하게 주말에 시간을 내어 진행하여 많은 부분을 해보지는 못했지만 좀 더 시간을 투자해서 4주 내에 꼭 하나의 루틴은 완성시켜보고 싶다는 생각이 들었습니다. (모각에 참여 했다면 좀 더 짧은 시간 내에 결과물을 가져올 수 있었을 것 같다는 아쉬움도 남았습니다.)

2
2개의 답글

👉 이 게시글도 읽어보세요