VO7E
A
익명님이 2022-08-02에 작성

구글 스프레드 시트 API 연동하는 가장 쉬운 방법 (node.js)

구글,spreadsheet,api,nodejs,sheetsapi,구글시트,스프레드시트
https://developers.google.com/sheets/api/quickstart/nodejs

웹 어플리케이션을 만들 때 몇몇 개발자들은 수집한 데이터를 구글 스프레드 시트에 추가 작성 하고 싶어 합니다. 그럴 때 사용하라고 구글에서는 API를 지원합니다. 다만 퀵 스타트에 있는 코드와 스프레드 만들기의 코드가 조금 다른 모습을 볼 수 가 있어서 API 통신을 할 때 인증문제로 애를 많이 먹는 경우가 있습니다. 그래서 노드 js에서 어떻게 하면 API를 연동하고 웹 페이지에서 원격으로 작성할 수 있는지를 설명드리도록 하겠습니다. 우선 구글 스프레드 시트와 연동을 하려면 google cloud platform에 접속해 spreadsheet api를 만들어서 사용할 수 있게 해야 합니다. 그런 다음 client.... 라고 시작하는 json 파일을 다운 받아 코드를 작성할 파일 또는 json 이라는 폴더를 따로 만들어서 프로젝트 안에 넣어주세요. 이름을 원하는 대로 바꾼 뒤 위 링크에 있는 퀵스타트 코드를 복사 붙여 넣기 해 node js로 실행 시켜 주시면 됩니다. 토큰 까지 생성되었는데 이제는 그 뒤가 문제 입니다. `quickstart`랑 `create spread sheet가 조금 다릅니다 이유는 auth 안에 들어가는 코드가 달라서 인데 가능하면 googleAuth 보다 OAuth2를 사용하셔야 작동됩니다. 거기에 2개 파일의 json 데이터 와 scope 까지 추가하지 않으면 에러가 발생합니다. 하단의 코드는 스프레드 시트 퀵 스타트와 새 시트 만들기 를 콜백 함수에서 일반 비동기 순서로 처리하도록 만든 코드 입니다. 사실 잘 만든 순서의 코드는 아니지만 콜백 함수에서 어떻게 순서대로 바뀌었는지를 이해하시는 용도로 보시면 좋을 것 같습니다. 익스프레스를 통해 해당 url에 접속하면 연결된 아이디에 새로운 시트가 생성됩니다!

var express = require('express'); var router = express.Router(); const fs = require('fs'); const readline = require('readline'); const {google} = require('googleapis'); const {GoogleAuth} = require('google-auth-library'); let authdata = {}; const TOKEN_PATH = 'json/token.json'; let content = fs.readFileSync('json/credentials.json'); authdata = JSON.parse(content).web const auth = new google.auth.OAuth2( authdata.client_id, authdata.client_secret, authdata.redirect_uris, {scopes: 'https://www.googleapis.com/auth/spreadsheet'} ); const token = fs.readFileSync(TOKEN_PATH); auth.setCredentials(JSON.parse(token)); async function create(title) { const service = google.sheets({version: 'v4', auth}); const resource = { properties: { title, }, }; try { const spreadsheet = await service.spreadsheets.create({ resource, fields: 'spreadsheetId', }); console.log(`Spreadsheet ID: ${spreadsheet.data.spreadsheetId}`); return spreadsheet.data.spreadsheetId; } catch (err) { // TODO (developer) - Handle exception throw err; } } /* GET users listing. */ router.get('/', function(req, res, next) { create("새 시트 타이틀"); res.send("ko"); }); module.exports = router;

nodejs에서 google sheet api를 비동기로 변경하여 순서대로 실행되는 결과 이미지nodejs에서 google sheet api를 비동기로 변경하여 순서대로 실행되는 결과 이미지
Total 0

동작해요!

에러가나요!

댓글
Drag and drop files here or click
A
익명
2022-08-02에 작성

길고 장황하게 적었지만 요점은 json 파일로 부터 불러오는 데이터를 콜백 함수가 아니라 비동기로 불러와서 좀 더 이해할 수 있게 만든 것 입니다.

A
익명
2022-08-02에 작성

이 코드를 실행하시기 전 퀵스타트에 나와있는 대로 우선 토큰을 먼저 만들어 주세요!

A
익명
2022-08-02에 작성

이 코드를 실행하시기 전 퀵스타트에 나와있는 대로 우선 토큰을 먼저 만들어 주세요!

익명님, 안녕하세요!

로그인 하시면 작성된 글을 수정할 수 있습니다.

VO7E Recent Post

작성된 최신글을 확인하세요!

사이트 TIP

This site made with Mudblazor!

An error has occurred. This application may no longer respond until reloaded. Reload 🗙