Google 시트를 읽는 Node.js 🤓

17008 단어 nodeapi
데이터베이스와 관련하여 우리는 종종 SQL 데이터베이스 또는 NoSQL 대안에 대해 생각하지만 Google 시트를 고려한 적이 있습니까?

어, 잠깐만? 예 Google 스프레드시트는 데이터 저장소 역할을 할 수 있습니다!

그래서 오늘은 구글 시트에서 데이터를 읽을 수 있는 Node.js 스크립트를 만들어 보겠습니다.

다음과 같이 표시됩니다.



프로젝트 시작



우리는 처음부터 프로젝트를 시작할 것입니다. 먼저 새 노드 프로젝트를 설정하겠습니다.

npm init


여기에서 안내를 따를 수 있습니다. 특별한 것은 필요하지 않습니다

More info about starting a node app here.



이제 Google API 패키지를 설치해 보겠습니다.

npm install googleapis@39 --save


그게 다야!

이제 Google에서 credentials.json 파일을 가져와야 합니다.

다음 URL을 방문하여 Enable the Google Sheets API 버튼을 클릭하십시오.

Google Quickstart
credentials.json 파일을 프로젝트에 복사합니다.

노드 스크립트 만들기



이제 Google에서 제공하는 노드 스크립트를 사용하여 시작하겠습니다.

프로젝트에 index.js 파일을 생성합니다.

변수를 정의하는 것으로 시작합니다.

const fs = require('fs');
const readline = require('readline');
const {google} = require('googleapis');


그런 다음 사용하려는 API를 Google에 알려야 합니다.

const SCOPES = ['https://www.googleapis.com/auth/spreadsheets.readonly'];


비어 있는token.json 경로를 정의합니다(Google에서 토큰을 거기에 저장함).

const TOKEN_PATH = 'token.json';


그런 다음 자격 증명 파일을 읽고 Google로 승인해야 합니다!

이 작업이 모두 완료되면 메인 함수인 listMajors 함수를 호출합니다!

fs.readFile('credentials.json', (err, content) => {
  if (err) return console.log('Error loading client secret file:', err);
  authorize(JSON.parse(content), listMajors);
});


좋아, 권한 부여 기능을 만들어 보자!

function authorize(credentials, callback) {
  const {client_secret, client_id, redirect_uris} = credentials.installed;
  const oAuth2Client = new google.auth.OAuth2(
      client_id, client_secret, redirect_uris[0]);

  fs.readFile(TOKEN_PATH, (err, token) => {
    if (err) return getNewToken(oAuth2Client, callback);
    oAuth2Client.setCredentials(JSON.parse(token));
    callback(oAuth2Client);
  });
}


파일에서 받은 자격 증명을 정의하고 새 oAuth 클라이언트를 만듭니다.
그런 다음 새 token.json 파일을 시작하고 getNewToken 함수를 호출합니다.

function getNewToken(oAuth2Client, callback) {
  const authUrl = oAuth2Client.generateAuthUrl({
    access_type: 'offline',
    scope: SCOPES,
  });
  console.log('Authorize this app by visiting this url:', authUrl);
  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
  });
  rl.question('Enter the code from that page here: ', (code) => {
    rl.close();
    oAuth2Client.getToken(code, (err, token) => {
      if (err) return console.error('Error while trying to retrieve access token', err);
      oAuth2Client.setCredentials(token);
      fs.writeFile(TOKEN_PATH, JSON.stringify(token), (err) => {
        if (err) return console.error(err);
        console.log('Token stored to', TOKEN_PATH);
      });
      callback(oAuth2Client);
    });
  });
}


이것은 약간 와우, 무슨 일이 일어나고 있습니다.
그러나 함수를 실행하면 URL을 방문하라는 메시지가 표시됩니다.
그런 다음 이를 방문하여 Google에 스프레드시트에 대한 액세스 권한을 부여해야 합니다.
코드를 돌려받아 붙여넣습니다.
그 후 토큰이 생성됩니다!




Google 스프레드시트에서 읽는 노드입니다.



Google 시트( listMajors )에서 읽는 실제 함수를 만들기 위해 다음 코드를 사용합니다.

function listMajors(auth) {
    const sheets = google.sheets({ version: 'v4', auth });
    sheets.spreadsheets.values.get({
        spreadsheetId: '1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms',
        range: 'Class Data!A2:E',
    }, (err, res) => {
        if (err) return console.log('The API returned an error: ' + err);
        const rows = res.data.values;
        if (rows.length) {
            console.log('Name, Major:');
            // Print columns A and E, which correspond to indices 0 and 4.
            rows.map((row) => {
                console.log(`${row[0]}, ${row[4]}`);
            });
        } else {
            console.log('No data found.');
        }
    });
}


따라서 새 Sheets API를 정의하고 인증을 전달하는 것으로 시작합니다.
그런 다음 스프레드시트 ID와 셀 범위를 전달하는 values.get를 호출합니다.

Note: This ID is the default Google Testing document!



그런 다음 데이터를 받으면 특정 데이터를 콘솔로 다시 가져옵니다console.log!

이제 Google 시트에서 읽을 수 있는 노드 스크립트를 만들었습니다.

스크립트 실행



다음 명령을 실행하여 스크립트를 실행할 수 있습니다.

node .


When putting this code in Git, make sure to keep your credentials and token safe 🤓



GitHub 또는 Google에서 내 전체 코드를 찾을 수 있습니다.

읽어주셔서 감사합니다. 연결합시다!



제 블로그를 읽어주셔서 감사합니다. 내 이메일 뉴스레터를 구독하고 Facebook에 연결하거나

좋은 웹페이지 즐겨찾기