Daily

구글 스프레드시트 자동화

젤리젤리젤리젤리젤리 2025. 5. 15. 11:04
반응형

파이썬으로 구글 시트에 연결하여 키워드를 가져오고, 해당 키워드 옆에 "전송완료"라고 표시하는 파이썬 코드를 다시 한번 제공해 드리겠습니다.

이전에 안내해 드린 것처럼 gspread 라이브러리와 구글 클라우드 플랫폼(GCP) 서비스 계정을 사용합니다.

먼저 준비해야 할 사항들은 다음과 같습니다:

  1. 구글 클라우드 플랫폼(GCP) 프로젝트 설정:
    • GCP 콘솔에서 프로젝트를 만들거나 선택합니다.
    • "API 및 서비스" > "라이브러리"에서 "Google Drive API"와 "Google Sheets API"를 찾아 사용 설정합니다.
  2. 서비스 계정 생성 및 JSON 키 다운로드:
    • "API 및 서비스" > "사용자 인증 정보"에서 서비스 계정을 만듭니다.
    • 서비스 계정에 "편집자" 역할을 부여하거나, 최소한 Google Sheets API 관련 권한을 부여합니다.
    • 생성된 서비스 계정의 이메일 주소를 기록해둡니다.
    • 서비스 계정 상세 정보에서 "키" 탭으로 이동하여 JSON 형식의 새 키를 만들어 다운로드합니다. 이 JSON 파일은 파이썬 코드에서 인증에 사용됩니다.
  3. 구글 시트 공유 설정:
    • 키워드가 있는 구글 시트를 엽니다.
    • "공유" 버튼을 클릭하여, 위에서 기록한 서비스 계정 이메일 주소를 추가하고 "편집자" 권한을 부여합니다.

파이썬 라이브러리 설치:

아직 설치하지 않으셨다면, 터미널이나 명령 프롬프트에서 다음 명령을 실행하여 필요한 라이브러리를 설치하세요.

Bash
 
pip install gspread google-auth

이제 아래 파이썬 코드를 사용하시면 됩니다.

파이썬 구글 시트 키워드 처리
5월 14일 오후 1:45
Canvas 사용하지 않고 다시 시도하기

코드 사용 방법:

  1. --- 설정 --- 부분 수정:
    • SERVICE_ACCOUNT_FILE: 다운로드한 서비스 계정 JSON 키 파일의 정확한 전체 경로를 문자열로 입력합니다. (예: 'C:/Users/YourUser/keys/my-gcp-project-key.json' 또는 '/home/user/documents/my-key.json')
    • SHEET_NAME: 연결할 구글 시트의 이름을 정확하게 입력합니다.
    • WORKSHEET_NAME: 작업할 시트의 탭 이름을 입력합니다 (보통 '시트1' 또는 'Sheet1' 등).
    • KEYWORD_COLUMN: 키워드가 있는 열의 번호를 지정합니다 (A열은 1, B열은 2, ...).
    • STATUS_COLUMN: "전송완료" 상태를 기록할 열의 번호를 지정합니다.
    • API_DELAY: 구글 API 요청 사이에 약간의 지연 시간을 두어 단시간에 너무 많은 요청으로 인한 할당량 문제를 방지합니다. 기본값은 1초입니다.
  2. 코드 실행:
    • 위 코드를 .py 확장자로 저장합니다 (예: keyword_updater.py).
    • 터미널이나 명령 프롬프트에서 python keyword_updater.py 명령으로 스크립트를 실행합니다.
  3. 작동 로직:
    • 스크립트는 먼저 설정된 서비스 계정 정보를 사용하여 구글 API에 인증합니다.
    • 지정된 스프레드시트와 워크시트를 엽니다.
    • 워크시트의 모든 데이터를 가져옵니다. (헤더가 있다면 헤더를 제외하고 데이터만 처리하려고 시도합니다.)
    • 각 행을 순회하며 다음 작업을 수행합니다:
      • KEYWORD_COLUMN에서 키워드를 읽습니다.
      • STATUS_COLUMN에서 현재 상태를 읽습니다.
      • 키워드가 존재하고, 비어있지 않으며, 현재 상태가 "전송완료"가 아니면:
        • --- 여기에 키워드를 사용하는 실제 로직을 추가하세요 --- 주석이 있는 부분에 실제 키워드를 활용하는 코드를 작성해야 합니다. (예: 다른 서비스로 키워드 전송, 데이터베이스에 기록 등)
        • 키워드 관련 작업이 (가상으로) 성공했다고 가정하고, STATUS_COLUMN의 해당 셀 값을 "전송완료"로 업데이트합니다.
        • API 요청 후 API_DELAY 만큼 대기합니다.
      • 이미 "전송완료" 상태이거나 키워드가 없는 행은 건너<0xEB><0x9B><0x84>니다.
    • 스크립트 실행이 완료되면 업데이트된 키워드 수와 처리된 키워드 목록(선택적)을 출력합니다.

중요 참고 사항:

  • JSON 키 파일 경로: SERVICE_ACCOUNT_FILE 변수에 정확한 경로를 입력하는 것이 매우 중요합니다. 파일이 없거나 경로가 틀리면 FileNotFoundError가 발생합니다.
  • 실제 키워드 처리 로직: 현재 코드에서 --- 여기에 키워드를 사용하는 실제 로직을 추가하세요 --- 부분은 단순히 키워드를 출력하고 리스트에 추가하는 예시입니다. 이 부분을 실제 수행해야 하는 작업(예: API 호출, 데이터 저장 등)으로 대체해야 합니다.
  • 오류 처리 및 로깅: 기본적인 오류 처리(파일/시트/워크시트 찾기 오류, API 오류 등)가 포함되어 있습니다. 실제 운영 환경에서는 필요에 따라 더 상세한 로깅과 예외 처리를 추가하는 것이 좋습니다.
  • API 할당량: 구글 Sheets API는 사용량에 제한(할당량)이 있을 수 있습니다. 매우 많은 데이터를 짧은 시간 안에 처리하려고 하면 API 오류가 발생할 수 있습니다. API_DELAY 값을 조절하거나, 구글 클라우드 콘솔에서 할당량을 확인하고 필요한 경우 증설 요청을 고려하세요.
  • 헤더 행 처리: 코드는 첫 번째 행을 헤더로 간주하고 건너<0xEB><0x9B><0x84>려고 시도합니다 (data_rows = all_rows[1:] if all_rows and header_row else all_rows). 만약 시트에 헤더가 없거나 다른 방식으로 처리해야 한다면 이 부분을 수정해야 합니다. start_row_index_in_sheet 변수는 시트 상의 실제 행 번호를 계산하는 데 사용됩니다.

이 코드가 구글 시트 작업을 자동화하는 데 도움이 되기를 바랍니다.

반응형