Как получить доступ к Cloud Firestore из Google Sheets? - PullRequest
1 голос
/ 02 апреля 2019

Я пытаюсь получить доступ к базе данных Cloud Firestore из таблицы Google с помощью примера FirestoreGoogleAppsScript , но, как объяснено в 5-м пункте, я скачал файл, но не нашел, где обновить client_email, private_key и project_id в проекте. Так что, будь добр, дай мне двигаться вперед.

Когда вы нажимаете «Создать», ваш браузер загружает файл .json с вашим закрытым ключом (private_key), адресом электронной почты учетной записи службы (client_email) и идентификатором проекта (project_id). Скопируйте эти значения в ваш скрипт Служб Google - они понадобятся вам для аутентификации в Firestore.

с демо Code.gs

function myFunction() {
  projectid: "fir-79c39";
  key: "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCwMaJIlrvKjvgA\nVANhq81Oh0oTCRjyOMj6B4PE2wE9JhEnZQERkc0MX8k27DdFLQe3fnjNCc0+1Jj6\nB4Kf/86dtmXd/hTgDLsbUqF4q8vmjsBeJtdTEgcbWh0WhPKcHbAILAgFhcg0PtpT\nkI6oUs+U5cgh4OkaigIGBmt2epr3iZloj7HRw/Mj9L4Qb+0bTOmziqTUWWkPRUQ4\nmn+/Gnxh+S4XH7q4KedxbUZYPagoU2W+wktMZMVc6BMMTbFxNqG5vcUS6gv8oV1k\nJqrURiTqsV6rqJE1ig2X3KtMAwJ64LxhnD2KhPR5KMqkTr3sq5hS2bLch+r7+3Pe\n01DE4DcHAgMBAAECggEAC7uCXusKnjZe9Uai4wIZrbz8hb/5VUfKujt93sHmlzfN\ntJ3ZMF5RFR3bvDiGhai19tYJHT4l2KU3eo69eAIEtCPNLLcalMDERNF/xxVJgpTG\n4n4boIB20K9zeGhp71NawXCNKDD8X94/k4jwtuysvfF/HiJn40iFUfljdoQ7hXgb\noNvB/GE3xA/y86Vxv3zIln4pQdSvz2hiVVXciPRskhCo0fZ5li0uSYyutAxtw+4l\n7haoTqwAYpFlvuh9ggYkQYEhXzfpMZDXZDm1xY15R2wUoJ4TWd3jsxw+BdRRb/ic\nfMcoLdI7LRH+tcK0Z8GMaVSxxlj3jZpnAU7+xFl7wQKBgQDy4potBXWs8r7uK+5v\npJx2kvhX58PeH6V9v6VjLSwS7Oxy3tPaVK0AT4/oyH0C9UiXEi4LG09jEfozrTPi\nm/QVQka4ep4VlPtZCzP/3vqtRrE6ISTJxnF1qYegDW4RN18GIiCTajEsCoWEpjQm\n5l3qQS9UV/78LcxF7iopKFqbXwKBgQC5tSi9Vwdm970G0uJRS5mvPUWV5l6J/e0b\nUFoigXMh+n3liYaQkgU0o+tt8aa6S+t9eOwaVeeu3x8hShYHeFw55EKN3XE/SyMH\nGcNi9vtJXNKeSC+K5f1IU7QCcOTD9bfjdBCb/XVHatCSvI3oxakuuKtcOjm+yWBr\nb0C7ej+tWQKBgQC1nrjHHaQG9WXMV1FublsJV5EYupf+Sw/G3j3f0XF5nWyZ4QHt\n6w+KgfQMj47bXWswfEmtyHgujszXQ5bexttX4j1byWTYopTo2rXBiY1NcOUpoIsP\nzrIc1+4wwpohiZQm0/IkCW5Hjn6U2Gt7AxwLBT9NBJgJHn33dMZWDHTkZQKBgByO\nrSsgnPTKl/jaqQ7TT1jRVUgN2u/hanrOym2P9oJ9IKsRkO3eZoqHwoZvqLHxRs9O\nrxAFsdEEYqcd23FeouAMJ+fk66tOBJ7s6Uzoqg/IBGNuulDjuSVMKdxOO/+eY57I\nlF1IhqZq2JQYBsKK0s9qen9+PK8IDJm4y/2IeQ5RAoGAKdUKaAUaUeXwTSSofNBy\nRiB3vSZ683AEvgtUqQxj/jJBmlhhtus4JuSBnSOSb/pgnOy1ZRzFQjqRqhMeMgR9\nG9WtF3WV+QR7Hg3zoWManiL63tZA5TloPxEjlA9QOR+R0nkbdUT+1SrdII2mGvH0\nmPbmhAAu6XKP+E5QoV5wUDs=\n-----END PRIVATE KEY-----\n";
  email: "firebase-adminsdk-4rxlg@fir-79c39.iam.gserviceaccount.com";

  var firestore = FirestoreApp.getFirestore(email, key, projectId);
}

ошибка

ReferenceError: "email" is not defined. (line 7, file "Code")

1 Ответ

2 голосов
/ 02 апреля 2019

Вы должны сделать следующее, например, в простой функции, которая извлекает коллекцию:

function fecthFirstCollectionDocs() {

  var email = "xxxxxx@yyyyyyy.iam.gserviceaccount.com";
  var key = "-----BEGIN PRIVATE KEY-----\your key here\n-----END PRIVATE KEY-----\n";
  var projectId = "zzzzzzzzz";

  var firestore = FirestoreApp.getFirestore(email, key, projectId);

  const allDocuments = firestore.query("FirstCollection").execute();
  Logger.log(JSON.parse(allDocuments));

}

Значение key получается путем создания учетной записи службы, как описано в документации библиотеки.: https://github.com/grahamearley/FirestoreGoogleAppsScript#creating-a-service-account. Это довольно просто, просто следуйте инструкциям.

Вы должны скопировать только часть между -----BEGIN PRIVATE KEY----- и -----END PRIVATE KEY-----\n из файла .json.


Отредактировано после вашего комментария от 9 апреля:

Чтобы устранить ошибку

ReferenceError: "email" is not defined. (line 7, file "Code") 

, вы должны правильно объявить переменные, которые вы передаете методу getFirestore(), как показано в кодемоего ответа и следующим образом:

вместо того, чтобы делать

  projectid: "fir-79c39";

, вы должны сделать

  var projectid = "fir-79c39";

Вы объявляете переменную с именем projectid, которую вы используете вgetFirestore() метод.То же самое для key и email.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...