본문 바로가기

💻 개발IT/Infra

[Firebase Firestore] 엑셀로 데이터 입력하기 / 데이터 전체 삭제

이전 글을 통해

firestore 데이터를 엑셀로 export 진행하고

https://sunghee2.tistory.com/entry/Firebase-Firestore-%EC%97%91%EC%85%80-%EB%82%B4%EB%B3%B4%EB%82%B4%EA%B8%B0

 

[Firebase Firestore] 엑셀 내보내기

이번에 개발하는 서비스는 사전 데이터 입력이 매우 많아 Firebase 사이트에서 데이터를 한땀한땀 넣고 있었다..🥲 속으로 토를 몇 번 하고 원치 않게 지금까지 살면서 수치스러웠던 일들이 문득

sunghee2.tistory.com

 

이 글에서는

데이터를 전체 삭제하고

엑셀 데이터를 firestore에 저장하는 방법을 적고자 한다. 

 

 

준비 작업

상단의 이전 글에서 코드 작성 전인 1 ~ 4 까지의 작업을 진행한다.

그리고 새로 생성한 시트에는 저장하고 싶은 엑셀 데이터를 넣어둔다. 

 

 

전체 삭제 코드

 for(var i = 1; i < data.length; i++) {
  // 엑셀의 0열에서 collection 이름을 가져와서 데이터를 전체 불러옴
  const allDocuments = firestore.getDocuments(data[i][0])
  for(var j = 0; j < allDocuments.length; j++) {
    // 마지막에 있는 데이터 key 값을 가져옴
    const arr = allDocuments[j].name.split('/')
    firestore.deleteDocument(`${data[i][0]}/${arr[arr.length - 1]}`);
  }
  console.log(`${data[i][0]} ${allDocuments.length} 완료`)
 }

 

 

insert 코드 작성

function writeDataToFirebase() {
 var ss = SpreadsheetApp.openById("sheet_id");
 var sheet = ss.getSheets()[0];
 var data = sheet.getDataRange().getValues();
 var dataImport = {};
 var firestore = FirestoreApp.getFirestore("client_email", "private_key", "project_id");
 for(var i = 1; i < data.length; i++) {
 dataImport ={
  "Field1": data[i][0],
  "Field2": data[i][1],
 }
 firestore.createDocument("document명", dataImport)
 }
}

Firebase 프로젝트에 접속한 뒤

좌측 상단에서 설정 아이콘 선택 후 [프로젝트 설정] 클릭한다.

 

[서비스 계정] 메뉴에서 좌측 중앙에 [서비스 계정 n개] 클릭하면 구글 클라우드 사이트에 접속된다.

 

구글 클라우드 사이트에서 

좌측 [서비스 계정] 메뉴를 클릭하고

목록에 나오는 이메일을 클릭한다. 

 

상단의 [키] 메뉴에서 [키 추가] 버튼을 누른 후

형식은 json으로 다운받고

파일에서 [project_id], [private_key], [client_email] 값을 복사하고 코드에 입력한다. 

 

 

실행

다시 Apps Script 사이트로 돌아와서 writeDataToFirebase 선택 후 [실행] 버튼을 누른다.

 

firebase firestore에 들어가면 데이터가 잘 들어가있는 것을 확인할 수 있다. 

반응형