GAS(Google Apps Script)에서 Cloud Firestore를 사용할 때의 메모

Google Apps Script에서 Cloud Firestore를 사용하는 방법에 대해 알아보세요.

참고 URL



Firestore for Google Apps Scripts - Github
【서적 관리 시리즈】GAS와 FireBase(Firestore)를 연계시켜라! - Qiita

사전 준비



Firebase 에서 프로젝트가 생성되었습니다.
Cloud Firestore에서 데이터베이스를 생성했습니다. (샘플)


Google Apps Script에서 FirestoreApp 라이브러리 추가



1. Google 스프레드시트에서 '도구'->'스크립트 편집기' 열기
2. 리소스 -> 라이브러리
3. Add a library에 1VUSl4b1r1eoNcRWotZM3e87ygkxvXltOgyDZhixqncz9lQ3MjfT1iKFw4. FirestoreApp 추가(버전은 최신으로 유지)


서비스 계정 만들기



1. Google Service Accounts page 방문.
2. Firebase 프로젝트 선택 -> "서비스 계정 만들기"

3. 서비스 계정 이름, 서비스 계정 ID 입력 -> 만들기
4. 역할 -> Cloud Datastore 소유자 선택 -> 계속
5. 사용자 역할, 관리자 역할은 특별히 설정하지 않아도 OK -> 완료

6. 작성한 서비스 어카운트로부터 「키를 작성」-> 키의 타입은 "JSON"으로 하고 로컬에 보존한다.


※JSON의 내용(샘플)


Google Apps Script 코드



가져오기(취득): 컬렉션의 모든 문서 가져오기



「키의 작성」으로 출력한 JSON내의 "project_id", "private_key", "client_email"를 사용한다. function firestoreData 로 열쇠의 정보를 세트.

.gs
// CloudFirestoreで認証する為のJSON情報を指定
function firestoreDate() {
  var dateArray = {
    'email': '[email protected]',
    'key': '-----BEGIN PRIVATE KEY-----\nxxxxxxxxxxxxxx\n-----END PRIVATE KEY-----\n',
    'projectId': 'projecttest-99999'
  }
  return dateArray;
}

// メイン処理部
function myFunction(){
  // CloudFirestoreの認証
  var dateArray = firestoreDate();
  var firestore = FirestoreApp.getFirestore(dateArray.email, dateArray.key, dateArray.projectId);
  // CloudFirestoreからデータを読み込む
  const doc = firestore.getDocument("TEST/voKMytSenYR9ZWYoCeWr");
  console.log(doc);
}

콘솔
[20-12-06 21:58:08:439 JST] { name: 'projects/projecttest-99999/databases/(default)/documents/TEST/voKMytSenYR9ZWYoCeWr',
  fields: 
   { TEST02: { stringValue: '0002' },
     TEST01: { stringValue: '0001' } },
  createTime: '2020-12-06T11:53:16.582462Z',
  updateTime: '2020-12-06T11:53:16.582462Z' }

로드(취득): 기타 속성 항목



.gs
function myFunction(){
  // CloudFirestoreの認証
  var dateArray = firestoreDate();
  var firestore = FirestoreApp.getFirestore(dateArray.email, dateArray.key, dateArray.projectId);
  // CloudFirestoreからデータを読み込む
  const doc = firestore.getDocument("TEST/voKMytSenYR9ZWYoCeWr");
  console.log(`フィールドTEST01:${doc.obj.TEST01}`);
  console.log(`フィールドTEST02:${doc.obj.TEST02}`);
  console.log(`データベースの読み込み時間:${doc.read}`);
  console.log(`データベースの更新時間:${doc.updated}`);
  console.log(`データベースの作成時間:${doc.created}`);
  console.log(`Fullドキュメントパス:${doc.name}`);
  console.log(`Localドキュメントパス:${doc.path}`);
}

콘솔
 フィールドTEST01:0001
 フィールドTEST02:0002
 データベースの読み込み時間:Sun Dec 06 2020 22:18:01 GMT+0900 (日本標準時)
 データベースの更新時間:Sun Dec 06 2020 20:53:16 GMT+0900 (日本標準時)
 データベースの作成時間:Sun Dec 06 2020 20:53:16 GMT+0900 (日本標準時)
 Fullドキュメントパス:projects/projecttest-99999/databases/(default)/documents/TEST/voKMytSenYR9ZWYoCeWr
 Localドキュメントパス:TEST/voKMytSenYR9ZWYoCeWr

쓰기(업데이트): 문서에서 덮어쓰기 업데이트



「키의 작성」으로 출력한 JSON내의 "project_id", "private_key", "client_email"를 사용한다. function firestoreData 로 열쇠의 정보를 세트.

.gs
// CloudFirestoreで認証する為のJSON情報を指定
function firestoreDate() {
  var dateArray = {
    'email': '[email protected]',
    'key': '-----BEGIN PRIVATE KEY-----\nxxxxxxxxxxxxxx\n-----END PRIVATE KEY-----\n',
    'projectId': 'projecttest-99999'
  }
  return dateArray;
}

// メイン処理部
function myFunction(){
  // CloudFirestoreの認証
  var dateArray = firestoreDate();
  var firestore = FirestoreApp.getFirestore(dateArray.email, dateArray.key, dateArray.projectId);
  // 更新するデータ
  const data = {
    "test01": "test001",
    "test02": "test002"
  }
  // CloudFirestoreをドキュメント更新
  firestore.updateDocument("TEST/voKMytSenYR9ZWYoCeWr", data);
}



쓰기(업데이트): 문서의 특정 필드 업데이트



.gs
function myFunction(){
  // CloudFirestoreの認証
  var dateArray = firestoreDate();
  var firestore = FirestoreApp.getFirestore(dateArray.email, dateArray.key, dateArray.projectId);  
  // 追加するデータ
  const data = {
    "test01": "test111"
  }
  // CloudFirestoreをフィールド更新
  firestore.updateDocument("TEST/voKMytSenYR9ZWYoCeWr", data, true);
}



문서 추가



.gs
function myFunction(){
  // CloudFirestoreの認証
  var dateArray = firestoreDate();
  var firestore = FirestoreApp.getFirestore(dateArray.email, dateArray.key, dateArray.projectId);
  // 追加するデータ
  const data = {
    "test03": "test003",
    "test04": "test004"
  }
  // CloudFirestoreをドキュメント追加
  firestore.createDocument("TEST", data);
}

좋은 웹페이지 즐겨찾기