반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- hls.js
- how to install cursor on ubuntu
- babel
- Prism.js
- cursor-ubuntu-installer
- REST API
- uint16array
- Game js
- KakaoMap
- code editor
- uint8array
- HLS
- Excel
- node
- multiple camera
- Flutter
- segment
- localization
- webrtc
- three.js
- Redux
- html2canvas
- jszip
- M3U8
- Babel standalone
- http live streaming
- typescript
- append row
- react
- swagger-typescript-api
Archives
- Today
- Total
Never give up
Node - appending row to Google spread sheet 본문
반응형
최근에
1. aws s3에 업로드 되는 파일이 보기 편하면 좋겠다(링크, 날짜, 해당 파일 정보)
2. 에러 발생시 에러대응 가능하도록 트래킹 할수있게 해달라
라는 요구를 받아서 비개발자가 보기에 가장 편한방식이 뭐가 있을까 고민해봤습니다
먼저 개발진행된 상황으로는
1. 특정 pc에만 배포되어있는 react, node
2. 외부 서버 없음
3. 해당 pc는 유저들이 사용하는 pc
그래서 고민해봤던게 2가지로
slack을 사용하는 환경으로 webhook추가(빠른 알람 및 대응)
google spread sheet를 사용해 줄추가를 해보게 됐습니다
webhook은 url이랑 data약속만 지키면 되니 건너뛰고 예제를 만들어봤습니다
(사실 대부분이 url이랑 약속만 잘지키면 됩..)
export const appendToGoogleSheet = async ({
state,
songInfo,
uuid,
}: {
state: number;
songInfo?: string[];
uuid: string;
}) => {
try {
const client = (await auth.getClient()) as any;
const sheets = google.sheets({ version: "v4", auth: client });
const s3Link = process.env.S3_BUCKET_FOLDER + uuid + "/";
let values: string[][];
let range: string;
if (state === MEDIA_STATE.error) {
values = [[s3Link, getCurrentDate()]];
range = getRange("error", values[0].length);
} else {
values = [[...songInfo!, s3Link, getCurrentDate()]];
range = getRange("log", values[0].length);
}
await sheets.spreadsheets.values.append({
spreadsheetId: SPREADSHEET_ID,
range,
valueInputOption: "RAW",
requestBody: {
values,
},
});
} catch (err) {
logger.error(`[google] error: ${getErrMsg(err)}`);
}
};
const getRange = (sheet: string, columnCount: number) => {
const lastColumn = String.fromCharCode("A".charCodeAt(0) + columnCount - 1);
return `${sheet}!A:${lastColumn}`;
};
google api를 사용하다보니 서비스계정이 필요하고
api 설정, 편집자 등록 후 GoogleAuth를 콜해서 인증을 해줍니다
그리고 values에 넣을 데이터를 적어줍니다
이후 range에 "sheet name!첫번째행:마지막행"으로 적어주시면 됩니다
작업 후 확인해보면 정상적으로 작동되는데, 한가지 아쉬움이 있다면
최신 데이터를 맨 위로 쌓는 기능은 제공하지 않더군요
반응형
'WEB' 카테고리의 다른 글
React, Next - localization with google spread sheet (0) | 2025.09.16 |
---|---|
React - Multiple camera recording (0) | 2025.09.16 |
React - zip, unzip(Feat. JSZip) (2) | 2024.11.14 |
React - excel example(feat. XLSX) (1) | 2024.11.14 |
React - Failed to fetch dynamically imported module (0) | 2024.08.20 |
Comments