n8n 구글시트트리거 노드와 구글시트 앱스스크립트 연동 안되는 걸 해결함 (Query 함수)

공유 차원에서 올려둡니다.

이전 포스팅에서 막혔던 내용 (구글시트트리거에서 Apps script가 반영되지 않는 문제)을 n8n assistant에게 질문했더니 이런 답을 줍니다. 한마디로 "안된다" 입니다.

n8n의 Google Sheets 노드는 n8n이 Google Sheets와 상호 작용하는 방식 때문에 Google Apps Script의 자동 완성을 지원하지 않습니다. 그 이유는 다음과 같습니다:

1. API 기반 액세스: n8n의 Google Sheets 노드는 Google Sheets API를 사용하며, 이 API는 본질적으로 시트에서 실행되는 Google 앱 스크립트를 트리거하거나 상호 작용하지 않습니다. Apps Script 자동 완성 기능은 주로 Google Sheets UI 내에서 작동하며 API 호출을 통해 액세스할 수 없습니다.

2. 앱 스크립트는 사용자 상호작용에서 실행됩니다: Google 앱 스크립트 기능은 일반적으로 사용자가 시트와 직접 상호작용할 때(예: 셀 입력) 자동 완성 또는 기타 UI 기반 기능을 실행합니다. API 기반 편집(예: n8n의 편집)은 자동 완성 또는 팝업과 같은 UI 관련 기능을 트리거하지 않습니다.

3. 제한된 API 트리거: Google Sheets API는 데이터 읽기, 쓰기 및 수정을 허용하지만, 명시적으로 설정하지 않는 한 Apps Scripts에 대해 onEdit() 트리거를 자동으로 호출하지 않습니다. 스크립트를 트리거하려면 Google 앱 스크립트 웹 앱 또는 시트 내의 사용자 지정 기능을 사용해야 합니다.

HTTP노드에서 우회하는 방법이 있다고 하는데 너무 복잡할 것 같아서 클로드에게 다른 방법 없는지 물어봤습니다.

  1. Arrayformula 사용해 보세요.

예시:

- B1셀에: =ARRAYFORMULA(IF(A:A<>"", A:A*2, ""))

- C1셀에: =ARRAYFORMULA(IF(A:A<>"", A:A*3, ""))

ARRAYFORMULA를 사용하면 수식을 드래그할 필요 없이 전체 열에 자동으로 적용됩니다.

처음들어보는 말이라 실제 수식을 주고 어떻게 적용하면 되는지 물어봤습니다. 함수 오류가 날 수 있다고 친절히 알려주네요.

=ARRAYFORMULA(IF(A2:A<>"",INDEX(sigungubjdongcode!D:D,MATCH(1,(LEFT(A2:A,FIND(" ",A2:A)-1)=sigungubjdongcode!B:B)*(MID(A2:A,FIND(" ",A2:A)+1,FIND(" ",A2:A,FIND(" ",A2:A)+1)-FIND(" ",A2:A)-1)=sigungubjdongcode!C:C),0)),""))

역시나 index 함수 때문에 에러가 납니다. 정확합니다.

  1. 이번엔 Query함수를 써보라고 합니다.

    역시나 처음들어보는 말입니다. 실제 적용방법을 물어봅니다.

=ARRAYFORMULA(
  IF(A2:A="", "",
    VLOOKUP(
      LEFT(A2:A,FIND(" ",A2:A)-1) & " " & 
      MID(A2:A,FIND(" ",A2:A)+1,FIND(" ",A2:A,FIND(" ",A2:A)+1)-FIND(" ",A2:A)-1),
      QUERY(
        {sigungubjdongcode!B:B & " " & sigungubjdongcode!C:C, sigungubjdongcode!D:D},
        "select Col1, Col2 where Col1 is not null",0
      ),
      2,
      FALSE
    )
  )
)

구글시트에 이런 형태의 함수로 들어간다고?? 네. 들어가더군요.

Google Docs Korea- 스크린 샷

막힐 때마다 하나씩 해결해 나가니 기분은 좋아지지만.. 이렇게 해서 기간 내 목표한 걸 해결할 수 있는지 모르겠네요.

4

👉 이 게시글도 읽어보세요