이번에 개발하는 서비스는
사전 데이터 입력이 매우 많아
Firebase 사이트에서 데이터를 한땀한땀 넣고 있었다..🥲
속으로 토를 몇 번 하고
원치 않게 지금까지 살면서 수치스러웠던 일들이 문득 떠올라
하나하나 후회와 함께 이불킥을 하다보니
이렇게 하면 안 되겠다는 생각이 들었다.
찾아보니 역시나 나 같은 사람들이 한 둘이 아니었다ㅎ
정신 건강을 위해
입력했던 데이터를 엑셀로 내보내고
엑셀로 입력하는 과정을 진행하고자 하고
이 글에서는 엑셀 내보내는 방법을 적고자 한다.
구글 시트 생성
구글 시트에 들어가 새 파일을 생성한다.
https://docs.google.com/spreadsheets/u/0/
Apps Script 실행
새로 생성한 시트 상단의
확장 프로그램 → Apps Script 메뉴를 클릭한다.
Firestore 라이브러리 추가
좌측 메뉴에서 라이브러리 우측의 + 버튼을 클릭한다.
스크립트 ID에
1VUSl4b1r1eoNcRWotZM3e87ygkxvXltOgyDZhixqncz9lQ3MjfT1iKFw
입력하고 [조회] 버튼을 클릭 후 [추가] 버튼을 클릭한다.
상단의 실행 버튼을 클릭하면 아래와 같은 팝업이 나타난다.
[권한 검토] 클릭 후 구글 로그인을 진행하고 접근 허용 해준다.
구글 시트 API 서비스 추가
좌측 메뉴의 [서비스] 우측의 + 버튼을 클릭한다.
목록 중 Google Sheets API를 클릭하고 [추가] 버튼을 누른다.
코드 작성
function getFirestore() {
var email = "client_email"
var key = "private_key"
var projectId = "project_id"
return FirestoreApp.getFirestore(email, key, projectId)
}
function myFunction() {
const firestore = getFirestore()
var activeSheet = SpreadsheetApp.getActiveSpreadsheet()
var sheet = activeSheet.getActiveSheet()
const allDocuments = firestore.getDocuments("Collection명")
for(var i = 0; i < allDocuments.length; i++) {
var myArr = []
var question = allDocuments[i].fields["필드명1"]
myArr.push(question.stringValue)
var description = allDocuments[i].fields["필드명2"]
myArr.push(description.stringValue)
sheet.appendRow(myArr)
}
}
Firebase 프로젝트에 접속한 뒤
좌측 상단에서 설정 아이콘 선택 후 [프로젝트 설정] 클릭한다.
[서비스 계정] 메뉴에서 좌측 중앙에 [서비스 계정 n개] 클릭하면 구글 클라우드 사이트에 접속된다.
좌측 [서비스 계정] 메뉴를 클릭하고
목록에 나오는 이메일을 클릭한다.
상단의 [키] 메뉴에서 [키 추가] 버튼을 누른 후 json으로 다운받고
파일에서 [project_id], [private_key], [client_email] 값을 복사하고 코드에 입력한다.
실행
다시 Apps Script 사이트로 돌아와서 myFunction 선택 후 [실행] 버튼을 누른다.
시트로 돌아가보면 데이터가 엑셀에 들어가있는 것을 확인할 수 있다.
(추가) 만약 Array 데이터가 있을 경우
테스트 데이터를 만드는 경우
위의 코드 myFunction에서 for 문 안에만 추가해주면 된다.
for(var i = 0; i < allDocuments.length; i++) {
var myArr = []
// 이 부분을 추가해주면 된다 (시작)
const arrField = allDocuments[i].fields["필드명"].arrayValue.values
for(var j = 0; j < arr.length; j++) {
myArr.push(arr[j].stringValue)
}
// (끝)
sheet.appendRow(myArr)
}
'💻 개발IT > Infra' 카테고리의 다른 글
[Firestore] 비용 줄이기.. (0) | 2024.10.05 |
---|---|
[Firebase] Cloud Function 세팅해보자 (1) | 2023.09.21 |
[Firebase Firestore] 엑셀로 데이터 입력하기 / 데이터 전체 삭제 (0) | 2023.08.09 |
[AWS] EC2에 HTTPS 적용하기 (feat. Mixed Content 에러) (0) | 2023.06.07 |
[AWS] EC2에 Github 연동해보자 (0) | 2023.06.05 |
[AWS RDS] MySQL Workbench 연결하기 (0) | 2023.06.01 |
[AWS] EC2와 RDS 연동해보자! (0) | 2023.05.30 |
Netlify로 React 프로젝트 배포하기 (0) | 2023.05.28 |