인프런 커뮤니티 질문&답변
비디오 생성 부분에서 VIDEO - 시트 행 가져오기 노드에서 아래처럼 에러가 나요
해결된 질문
작성
·
16
0
이거 item으로 하는거 맞을까요? 에러나는데요?
강의에 있는 내용(에러남)
{{ $('IMG_PROMPT - 시트 행 가져오기').item.json.ID }}
현재변경상태
{{ $('IMG_PROMPT - 시트 행 가져오기').first().json.ID }}
{ "nodes": [ { "parameters": { "documentId": { "__rl": true, "value": "1598jdsyth9sQN_SMDftijF8IaxkO4FdxndFfxdheqmI", "mode": "list", "cachedResultName": "Youtube Shorts 자동화 Template(김영욱)", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1598jdsyth9sQN_SMDftijF8IaxkO4FdxndFfxdheqmI/edit?usp=drivesdk" }, "sheetName": { "__rl": true, "value": 1794818536, "mode": "list", "cachedResultName": "Youtube 자동화 시트", "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1598jdsyth9sQN_SMDftijF8IaxkO4FdxndFfxdheqmI/edit#gid=1794818536" }, "filtersUI": { "values": [ { "lookupColumn": "ID", "lookupValue": "={{ $('IMG_PROMPT - 시트 행 가져오기').first().json.ID }}" } ] }, "options": {} }, "type": "n8n-nodes-base.googleSheets", "typeVersion": 4.7, "position": [ 3776, 544 ], "id": "dc3ed630-1854-463d-a0c1-3c6185ac007a", "name": "VIDEO - 시트 행 가져오기", "credentials": { "googleSheetsOAuth2Api": { "id": "284k6gV823HAbz1N", "name": "Google Sheets account" } } } ], "connections": { "VIDEO - 시트 행 가져오기": { "main": [ [] ] } }, "pinData": {}, "meta": { "templateCredsSetupCompleted": true, "instanceId": "4b15107acc6f7c90aecf299aeeeff033cc193c7e7a724fd8b9299102220850ef" } } 이노드에서 item을 first()로 바꾸니까 일단 에러는 안나는데 엑셀시트에서 순서대로 불러오는건데 그거는 될까?
그래서 일단 item을 first()로 바꾸니까 일단 에러는 안나는 데 문제가 구글시트에서 새롭게 숏츠 제작할때마다 드래그 해서 위로 올려야 하잖아요 그럼 번거로 울거 같다서 물어봤더니 이렇게 대답해주네요
좋은 질문이에요 🙂
지금 설정을 보면 부분에서 로 바꾸셨죠. 이건 단순히 앞선 노드에서 나온 여러 item 중 첫 번째 item만 가져오겠다는 의미예요. 그래서 에러는 안 나지만, 엑셀 시트의 행을 순서대로 하나씩 가져오는 동작과는 조금 다릅니다.
핵심 차이
• → 결과 배열 중 첫 번째만 가져옴. 즉, 항상 같은 행만 불러오게 됨.
• 순서대로 불러오기 → 여러 item을 순회하면서 각각의 ID를 기준으로 시트 행을 가져와야 함.
순서대로 불러오려면?
• n8n에서는 일반적으로 Loop(For Each) 구조를 써야 합니다.
• 예를 들어 노드가 여러 item을 출력한다면, 그 item들을 그대로 다음 Google Sheets 노드에 전달하면 각 item별로 실행됩니다.
• 즉, 를 쓰지 않고 그냥 로 두면, 각 item의 ID가 순서대로 들어가면서 시트 행을 하나씩 가져오게 돼요.
정리
• 는 테스트용으로 에러를 피하는 데는 유용하지만, 실제로 순차적으로 여러 행을 가져오려면 쓰면 안 됩니다.
• 순서대로 가져오려면 형태로 두고, n8n의 기본 item 처리 흐름(각 item별 실행)을 활용하세요.
👉 지금처럼 자동화 시트에서 여러 행을 순서대로 불러오고 싶으신 거라면 대신 그냥 를 쓰는 게 맞습니다.
혹시 원하시는 게 엑셀 시트 전체를 순서대로 읽어서 영상 자동화에 쓰는 것인지, 아니면 특정 ID만 매칭해서 가져오는 것인지 알려주시면 더 정확하게 워크플로우 구조를 짜드릴 수 있어요.
맞아요 👍first()를 쓰면 항상 맨 앞 item만 고정적으로 가져오기 때문에 매번 제일 앞으로 드래그해야 하는 상황이 생깁니다. 즉, n8n의 기본 흐름(각 item을 순서대로 전달하는 구조)을 무시하게 되는 거죠.
어떻게 하면 순서대로 잘 가져올까?
Google Sheets 노드에서
lookupValue를={{ $json.ID }}로 두면, 들어오는 각 item의 ID 값이 그대로 적용돼서 순차적으로 행을 가져옵니다.n8n은 기본적으로 item 단위 병렬 실행을 지원하기 때문에, 별도의 드래그 없이도 여러 item이 순서대로 처리돼요.
만약 정말 "한 줄씩 순차적으로" 실행하고 싶다면, Split In Batches 노드를 써서 한 번에 하나씩 넘겨주는 방식도 있습니다.
정리
first()→ 항상 같은 첫 item만 가져옴 → 매번 드래그해야 하는 불편함 발생$json.ID→ 각 item별로 자동으로 순서대로 실행됨 → 원하는 동작에 더 적합
👉 따라서 지금 상황에서는 first() 대신 그냥 $json.ID를 쓰는 게 맞습니다.
혹시 원하시는 게 모든 행을 병렬로 가져오는 것인지, 아니면 진짜로 한 행씩 순차적으로 처리하는 것인지 알려주시면, 거기에 맞는 n8n 노드 구조(예: Split In Batches vs 기본 item 흐름)를 더 구체적으로 짜드릴 수 있어요.
좋은 포인트 짚으셨어요 🙂
지금 쓰신
{{ $('IMG_PROMPT - 시트 행 가져오기').first().json.ID }}
는 항상 첫 번째 아이템만 가져오게 됩니다. 그래서 순서대로 여러 행을 처리하려면 first()를 빼고 각 item의 값을 그대로 참조해야 해요.
올바른 변경 방법
{{ $json.ID }}
이렇게 바꾸면, n8n이 기본적으로 각 item을 순회하면서 해당 item의 ID 값을 자동으로 넣어줍니다. 따라서 시트 행을 순서대로 하나씩 가져올 수 있어요.
✅ 정리
first()→ 항상 첫 번째만 가져옴 (테스트용으로는 OK, 실제 순차처리에는 불편)$json.ID→ 각 item별로 ID를 순서대로 처리 (원하는 동작)
👉 따라서 first() 대신 {{ $json.ID }} 로 변경하시면 됩니다.
혹시 원하시는 게 모든 행을 병렬로 가져오는 것인지, 아니면 진짜로 한 행씩 순차적으로 처리하는 것인지에 따라 Split In Batches 같은 노드를 추가할 수도 있는데, 기본적으로는 $json.ID만 쓰면 자동으로 순서대로 돌아갑니다.
답변 1
0
안녕하세요!
이상하네요 이부분은 제가 item이라고 코드를 친게 아니라,
해당 시트의 ID를 끌어다 넣었을때 n8n에서 자동으로
'{{ $('IMG - 시트 행 가져오기').item.json.ID }}'
이렇게 입력해주는 부분이거든요
그래도 first로 했을때 에러가 안나고 잘 해결되셨다니 다행입니다!




