가계부 데이터를 노드로.js로 전자 표 결합
개시하다
처음 뵙겠습니다. 요즘 사우나에 푹 빠진 주식회사 리코쿠의 술자리입니다.
사활이야말로 정의다.
저도 음악을 좋아해요. 유명한 곳만 알 수도 있지만 학창시절부터 명곡이 많았어요.
예술가의 음악과 함께 지냈다.
저는 BUMP OF CHICKEN/ELLE GARDEN/ONE OK ROCK/UVER World 일대를 매우 좋아합니다. 울고 등을 밀고 정서를 고조시키고 깊은 생각에 잠긴 표정을 짓고 있습니다.(알 수 있겠지)
저는 평소에 서버 측 엔지니어로서 PHP를 접할 기회가 많습니다.
이번에는 노드다.js를 사용하여 Google 스프레드시트에 대한 데이터 결합을 작성하고 싶습니다.
전제로 삼다
나는 가계부 대신 전자 표를 쓴다.
컴퓨터에서 입력하는 부분은 신경 안 썼지만 스마트폰에서 입력하는 건 힘들었어요
애플리케이션으로 만들려고 원래 사용하던 스프레드시트를 DB로
쓰고 싶은 데가 있어.
단도직입적으로 말하면 Firebase Cloud Firestore를 사용하는 것이 더 쉽다
응용 프로그램 측의 실제 설치와 스프레드시트의 API 환경 준비 등은 이번에 하지 않는다.
애플리케이션 구성
구성을 간략하게 소개해드려요.
응용 프로그램
데이터베이스
환경을 구축하기 시작하다.먼저 카탈로그 제작부터 시작하겠습니다.
$ mkdir sheet-expenses-app
$ cd sheet-expenses-app
다음 노드.js 프로그램을 만듭니다.$ npm init
포장 이름과 다양한 질문을 받고 YES MAN에게 답했다.(이곳을 좋아하세요.)다음 패키지.제이슨을 만들었어요.
{
"name": "sheet-expenses-app",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
Firebase Function을 사용할 수 있습니다.이번엔 자바스크립트로
$ npm install @Google Cloud Monitoring/functions-framework -g
$ firebase init functions
이렇게 환경 자체가 형성되었다.기분을 올리고 싶으니까 헬로, 월드로 소통을 확인해 보세요.
index.js
const functions = require("firebase-functions");
exports.helloWorld = functions.https.onRequest(async (request, response) => {
response.json({result: 'Hello , World!'});
});
방문/helloWorld
후 답장Hello , World!
만 하면 됩니다.로컬 환경을 시작하고 확인합니다.
$ firebase emulators:start
응, 괜찮은데(미소)
연합 스프레드시트
그러면 스프레드시트에 쓰기 시작합니다.
프로그램 라이브러리에 미리 넣습니다.
$ npm install google-spreadsheet
또한 GCP 측에서 Google Sheets API를 유효화하고 서비스 계정과 인증 키를 준비합니다.여기까지 환경 준비가 끝났습니다.
코드를 계속 씁니다.
index.js
const functions = require("firebase-functions");
const { GoogleSpreadsheet } = require('google-spreadsheet');
// 認証ファイルパス
const CREDENTIALS_PATH = "./config/sheet_credential.json";
// スプレッドシートのIDを指定
const SHEET_KEY = 'XXXXXYYYYYZZZZZ';
exports.addGoogleSheetData = functions.https.onRequest(async (request, response) => {
// データ連携用にインスタンスを生成
const doc = new GoogleSpreadsheet(SHEET_KEY);
const credentials = require(CREDENTIALS_PATH);
await doc.useServiceAccountAuth(credentials);
// シート情報読み取り
await doc.loadInfo();
const sheet = await doc.sheetsById[1491717139];
// 連携用のデータは配列形式で指定する
let addData = [
'=ROW()-1',
'2021-10-20',
'CD',
'YOASOBI THE BOOK',
'3957',
];
// 書き込み処理
await sheet.addRow(addData);
response.json({ resultCode: 200});
});
쓴 수조에도 포함되지만 문자열 형식이라면 스프레드시트의 함수도 추가할 수 있다.동작을 시도해 보았다.
좋아, 안에 있어.
그러면 직접 쓴 곳을 수정하여 동적으로 변경합니다.
index.js
exports.addGoogleSheetData = functions.https.onRequest(async (request, response) => {
// リクエストパラメータを取得
let requestData = request.body.data;
// データ連携用にインスタンスを生成
const doc = new GoogleSpreadsheet(SHEET_KEY);
const credentials = require(CREDENTIALS_PATH);
await doc.useServiceAccountAuth(credentials);
await doc.loadInfo();
const sheet = await doc.sheetsById[1491717139];
// 連携用のデータは配列形式で指定する
let addData = [
'=ROW()-1',
requestData.purchaseDate,
requestData.category,
requestData.item,
requestData.price,
];
await sheet.addRow(addData);
return response.json({resultCode: 200});
});
제작 방법의 개발을 진행하다.$ firebase deploy
Deploy complete! 이렇게 표시하면 됩니다.그러면 응용 프로그램에서 바디까지 다음 인자를 설정합니다
디버그를 수행하는 API입니다.
{
"data": {
"purchaseDate": "2021-11-05",
"category": "CD",
"item": "BUMP aurora arc",
"price": "4653"
}
}
앱에서는 이런 느낌.스프레드시트를 확인합니다.
응, 안에 응용 프로그램이 투입한 데이터가 있어.
자, 완성!
총결산
이번에는 노드다.js에서 전자 표로 쓰기 처리되었습니다.
스프레드시트는 업무나 개인이 사용할 기회가 많기 때문에 더욱 효과적으로 활용할 수 있었으면 좋겠다고 생각합니다.
업데이트/delete도 했지만 길어지기 때문에 이번엔 여기서 마치겠습니다.
읽어주셔서 감사합니다.
내일레코드 제작사은 12일째인 미끄럼틀이 쉽게 만들어질 줄 몰랐다는 것이다.기대하세요~.
이 기사는 RecoChoku의 엔지니어 블로그를 옮긴 기사다.
Reference
이 문제에 관하여(가계부 데이터를 노드로.js로 전자 표 결합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hiroshidev/items/5723dea6087332742212텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)