데이터를 2초 안에 Google 스프레드시트로 보내는 방법은 무엇입니까?

참고: 이 문서에서 사용된 "Push to GSheet"서비스는 더 이상 활성화되지 않지만 Pizzly을 사용하여 자신의 버전을 호스팅할 수 있습니다.

저는 Google API의 열렬한 팬입니다. 나는 매일 많은 것을 사용합니다. 내 코드에서든, 그것에 의존하는 무한한 수의 서비스를 통해서든.

최근에 나는 스크래핑 스크립트를 실행하고 있었고 Google 시트에 끔찍한 복사/붙여넣기를 수행하고 있음을 금방 발견했습니다. 데이터를 스프레드시트에 동적으로 푸시하는 더 좋은 방법이 있어야 한다고 생각했습니다.



Google Sheets API 참조를 빠르게 살펴보면 작업을 잘 수행할 수 있는 /append 끝점을 찾았습니다. 30분 후, 백그라운드에서 스크립트가 실행되는 동안 레모네이드를 홀짝이고 있었습니다 😎

Google API가 마음에 들지 않았다면 확실히 다른 것으로 넘어갔을 것입니다. 하지만 데이터를 스프레드시트로 보내려면 20 minutes 기다리시겠습니까? 어서 해봐요! Google에서 검색하는 것처럼 간단하게 만들어 보겠습니다.

우리는 무엇이 필요한가?



먼저 API를 이해합니다. 방금 전에 말했듯이 Google 스프레드시트는 모든 유형의 데이터를 푸시할 수 있는 handy endpoint /append 을 제공합니다. 요구하는 것은 2차원array 형식의 값입니다.

const values = [
  // First row
  ["A1","A2","A3"],
  // Second row
  ["B1","B2","B3"]
  // Third row... 
]


데이터는 항상 시트에 추가됩니다. 따라서 시트의 행 #1에 일부 값이 있으면 새 값이 행 #2에 추가됩니다(등).

다음으로 인증을 처리합니다. 사용자 데이터에 대한 액세스 권한을 부여하는 대부분의 API와 마찬가지로 Google Sheets API는 OAuth2를 사용합니다. 매우 강력하면서도 설정하기 복잡한 인증 스키마입니다.

우리에게 흥미로운 점은 Google Sheets API에 대한 각 요청에 access_token가 필요하다는 것입니다. 이 문자열은 사용자를 대신하여 요청이 이루어졌음을 인증하는 추측할 수 없는 긴 문자열입니다.

Google은 쉽게 검색할 수 있도록 playground을 제공합니다. 하지만 나를 위해 OAuth-dance를 안전하게 처리하고 새로 고침 토큰을 처리하는 Pizzly이라는 서비스를 사용할 것입니다.

다른건 없나요? 데이터를 추가할 스프레드시트가 없습니다. 그것은 문서에 따라 spreadsheetID 입니다. 각 스프레드시트에는 URL를 조사하여 찾을 수 있는 고유 ID가 있습니다.

https://docs.google.com/spreadsheets/d/{{spreadsheetId}}/edit#gid=0


코드를 보여주세요!



요약하면 실제로 데이터를 스프레드시트로 보내는 데 10줄의 코드가 필요했습니다.

// 1. Run npm install node-fetch
// 2. Import an HTTP client
const fetch = require("node-fetch");

// 3. Declare spreadsheet and values to append
const spreadsheetId = 'SPREADSHEET_ID'
const data = [["firstname", "lastname"], ["John", "Doe"]]

// 4. Send data with a POST request
const baseUrl = "https://pushtogsheet.herokuapp.com";
const query = `valueInputOption=RAW&pizzly_pkey=pope8Qy8qfYyppnHRMgLMpQ8MuEUKDGeyhfGCj`;
const url = new URL(`/proxy/google-sheets/spreadsheets/${spreadsheetId}/values/A1:append?${query}`, baseUrl);

fetch(url.href, {
    method: "POST",
    body: JSON.stringify({ values: data }),
    headers: { 'Pizzly-Auth-Id': 'CONNECT_FIRST' }
  })
  .then((res) => res.text())
  .then(console.log)
  .catch(console.error);


어떻게 사용할 수 있습니까?



Google 검색만큼 쉽게 데이터를 gsheet로 푸시할 수 있도록 최선을 다했습니다. crafted a dedicated website for that:



이 문서에서 사용된 "Push to GSheet"서비스는 더 이상 활성화되지 않지만 Pizzly을 사용하여 자신의 버전을 호스팅할 수 있습니다.

추신: 100% 무료이며 오픈 소스입니다 ✌️

좋은 웹페이지 즐겨찾기