구글 Sheet JSON 파일로 로컬 저장

January 10, 2023

1. 문제

  • Sheet 버전이 V3 -> V4로 변경되면서, 기존에 사용하던 방법이 안되는 문제가 발생
    const url =
        'https://spreadsheets.google.com/feeds/cells/SPREAD_SHEET_ID/1/public/full?alt=json'
  • AppScript(구글 sheet 플러그인)는 redirect 발생
    curl -s  "https://spreadsheets.google.com/feeds/cells/SPREAD_SHEET_ID/1/public/full?alt=json" > data.json
    <html>
        <head>
            <title>Moved Temporarily</title>
        </head>
        <body bgcolor="#FFFFFF" text="#000000">
            <h1>Moved Temporarily</h1>
            The document has moved <a href="REDIRECT_URL">here</a>.
        </body>
    </html>

2. 해결책

  • curl -L((redirect follow) 플래그를 사용해서, AppScript 사용하자
     curl -s -L  "https://spreadsheets.google.com/feeds/cells/SPREAD_SHEET_ID/1/public/full?alt=json" > data.json
  • V4 API를 사용하여, JSON 형태로 데이터를 가져오자
    const url =
        'https://sheets.googleapis.com/v4/spreadsheets/SPREAD_SHEET_ID/values/TAB_NAME?alt=json&key=API_KEY'
    • SPREAD_SHEET_ID: 구글 Sheet의 고유 ID
    • TAB_NAME: Sheet의 탭 이름
    • API_KEY: 구글 API Key(링크)
      • 조건) spreadsheets API 사용등록 해야함(링크)

3. JSON 파일을 다운받아, 로컬에 저장

  • shell script를 실행하여, spreadsheets를 다운받아 json으로 만들기

    # make json 파일
    #!/bin/bash
    
    curl -s "https://sheets.googleapis.com/v4/spreadsheets/SPREAD_SHEET_ID/values/TAB_NAME?alt=json&key=API_KEY"

    sheet

      # data.json
    {
      "range": "test!A1:Z1000",
      "majorDimension": "ROWS",
      "values": [
        [
          "hello",
          "world"
        ],
        [
          "foo",
          "bar"
        ]
      ]
    }

출처 및 참고


© 2023, Customized by Joon