【GAS】Firestoreからドキュメントを全件取得する

特定のドキュメントを取得するサンプルはすぐに見つかったのですが、全件取得のサンプルは中々見つからなかったので残します。

1件取得する場合


function firestoreIni() {
  var dateArray = {
    'email': 'firebase-adminsdk-mto0u@XXXXXX-XXXXX.iam.gserviceaccount.com',
    'key': "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCghVD3X3nxPpSP\n+OztPV57+VNT5jt/hfd5aNvJaMAKFnl6LitBCgFxxgO4kXKZXMuHwZyRpuzje5RT\nGGUg2oUwUyb7EApSfHvvCkvVKMtuTX/Rjow52HFKVyxKxeKD/4sQMAKF+2p6neCe\nNq+GduLNmjNcFf7/v7SoH/L+Z9IAOW1RMpFszfx0GAaUiuQBT9SWSGVt6V5A+Fg4\nJZaR7F697Gv3f+QAlxrmmmEKC1wCfjRuzM/X8jqvHzMZoRZbxjdSG5EnMhBDM0rM\n7/TdHrcgo9ihHgSl9YhQls6FYD/zCoy7VvzOcppynXHqrfv/J27gl+PMAhD/aeK0\ndPgh2/0dAgMBAAECggEADIBVfe6BoLgu+cd5LEDLSvxv8OjNWXElhN8VvunZiu+V\nJl7SH46X7jRttcIeGrOPZlM9zlohuNW3B4Gu3pAmL01Ki+MD6sinHka/ASrcLQr8\nGWXwpdClghSn7mra6UzNl8UlbSnXcRU6mRfJM7+uijSoK1PLOD/F4hIa6pVLVZkD\nviT7rFsHtpZf20D5wONucgDsNNvIZZpxgWy5pI4oadzJbN7lUDDyI7ANq2TAgS4T\nulUb3OdnHMvdBTBDyEN8LZDn6V9R/3qWyYHpX1HHsLQ3EJesf6HfVdy3o9oCvKMn\nScj5Esj0YZORHWmrpriKphdl8p4R4RzWC2XO4C5oAQKBgQDUkCOQ91D1jufbr/ny\n1Gjmg17cLix9g+B0zw3/Oy8jtpcwxQbuASqYL1pTEb0Ugb0c+36fjKdaiyaAbo25\ngJMp5PbkN5UA/Y/p6/3AFQDtENQj1B6Eky4FiHWUksowkHUKPaqFSeeHXR0RAZ8C\nvoI+cDGy/tTVj7zRcpAXGjH1oQKBgQDBUq1n6lF8yGTPU0VBVSstMwtUy8alSJZT\n+Ab8Y/2VT0w9HsuCe3+nZhZBjw5Iz3iepwZ0aATbHWbznl8mqRRVmW1t0ym7EaV4\nv5tkEWNBgsZ9L8UQKIdcrQrhpKj9ZX+lJv1gdTGjAde3iDdyaVzlEmcxGgQUJ4PH\n0PLPEwkd/QKBgEXS81vzYczIHLG1pM13qN3P2aFKKaMxZtH4Egj9UAbTO+bxUc1s\n5KkJJQqUkR/jXlPe6UFP2smLXCJkLnn5Gl5wsAlXmMKyiEu3Eau/OoalOIpsa3nx\nPvTiVn1vmqtJSKkMiK8wD7YPiDTF643jNrV79VdvDkr45HWIxHxSRocBAoGBAKjT\nGrv01NSz69ViUsiLJ/mA6hRTIFaW3TDXGMKwT3NknJ+DlRWN5By7+hOmakMLa7qh\nAfIGJLd1JcL6Ov34Cdn28qlGDttevbKFIZ5x0MwU+GG6pc1Gl29Hbok+0pT3XlFL\ni1oA/ifsJAYS3tj7SjSBrbwjjAxNtbd5sZFEfmHBAoGAWEQy0x47R5C17yKuaD4J\nhPYetsBpoSftziSc4gAm/XVeirm9Iz35fCT3JnY5QcL1wFlZlJrQqCzucqJ1bYEk\nnlIRlGKLzr6ivWhCHXSmjW0F1lOW/46ogN3BYY1fbsKPU2d+xlT0jmtksc2qrvlE\ndVNHfS/OS9+4KDqJdsNwnzM=\n-----END PRIVATE KEY-----\n",
    'projectId': 'XXXXXX-XXXXX'
  }
  return dateArray;
  }
  return dateArray;
}

function myFunction(){
  // CloudFirestoreの認証
  var dateArray = firestoreIni();
  var firestore = FirestoreApp.getFirestore(dateArray.email, dateArray.key, dateArray.projectId);
  // CloudFirestoreからデータを読み込む
  const doc = firestore.getDocument("Sample/ドキュメントID");
  console.log(doc);
}

firestoreIni()ではFirestoreにアクセスするためにプロジェクト情報と認証キーを用意しています。
myFunctionで用意した接続情報をもとにFirestoreから特定のドキュメントを取得します。
※認証キーの設定には別途FirestoreのAPI設定が必要です。

こんな感じで変数「doc」の中にfieldsとしてFirestoreからデータを取得できています。

全件取得する場合

const doc = firestore.getDocument("Sample/ドキュメントID");

この部分を

const doc = firestore.getDocuments();

こう変えるだけ!

ドキュメントIDを指定しないとかは考えていましたが
getDocumentを複数系にしたらよかったとは。。。
確かに考えればそうなんですけど。

こんな感じで全件取得できました。

GASとFirestoreを利用される方の参考になればうれしいです。

この記事が気に入ったらサポートをしてみませんか?