【问题标题】:How to sync Firebase Database with Google Sheets?如何将 Firebase 数据库与 Google 表格同步?
【发布时间】:2017-12-09 00:04:03
【问题描述】:

我正在使用 ts 进行 Ionic 3 项目,以将 Firebase 集成到我的应用中。 下面的代码是我用来将 firebase 与 Ionic 项目集成的代码

constructor(angFire: AngularFireDatabase){
}
 books: FirebaseListObservable<any>;

为了将数据从我的应用程序发送到 firebase,我使用了 push 方法并更新了我使用 update($key) 的条目。现在我在 Firebase 后端拥有了所有数据。

现在,我如何将 firebase 数据库与 Google 表格同步,以便添加到 firebase 后端的每个条目都必须更新到表格中。我使用第三方 ZAPIER 进行此集成,但如果我能自己学习如何进行此同步,那就太好了。

在网上冲浪时,有许多教程可以将数据从 google 表格导入 Firebase。但是我没有遇到任何反之亦然的教程。

我遵循了以下教程,但它没有指向电子表格。 https://sites.google.com/site/scriptsexamples/new-connectors-to-google-services/firebase

任何帮助将不胜感激!

【问题讨论】:

  • 我也使用 Zapier。有趣的是看看这个问题将如何得到恰当的答案

标签: firebase ionic-framework firebase-realtime-database angularfire google-sheets-api


【解决方案1】:

我考虑通过 JavaScript SDK 或 REST API 将 Firebase 直接导入 Google Scripts。两者都有 Google 脚本无法满足或极难满足的要求/步骤。

  • 没有可预见的在 Google Script 中下载 JavaScript SDK 的方法,因为几乎所有方法都需要 DOM,而 Google Sheet 则没有。
  • REST API 需要 GoogleCredentials,乍一看,似乎也很难进入 Google 脚本

所以,另一种选择是在真正的服务器端环境中与 Firebase 交互。这将是很多代码,但这里是我将采取的步骤:

1) 设置一个Pyrebase 项目,以便您可以通过Python 与您的Firebase 项目进行交互。

import pyrebase

config = {
    "apiKey": "apiKey",
    "authDomain": "projectId.firebaseapp.com",
    "databaseURL": "https://databaseName.firebaseio.com",
    "storageBucket": "projectId.appspot.com",
    "serviceAccount": "path/to/serviceAccountCredentials.json"
}
firebase = pyrebase.initialize_app(config)

...

db = firebase.database()
all_users = db.child("users").get()

2)Google Scripts/Sheets 项目设置为可以与您的 Google 表格交互的类

from __future__ import print_function
import httplib2
import os

from apiclient import discovery
from oauth2client import client
from oauth2client import tools
from oauth2client.file import Storage

try:
    import argparse
    flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
except ImportError:
    flags = None

# If modifying these scopes, delete your previously saved credentials
# at ~/.credentials/sheets.googleapis.com-python-quickstart.json
SCOPES = 'https://www.googleapis.com/auth/spreadsheets.readonly'
CLIENT_SECRET_FILE = 'client_secret.json'
APPLICATION_NAME = 'Google Sheets API Python Quickstart'

class GoogleSheets:

    ...
    # The rest of the functions from that link can go here
    ...

    def write(self, sheet, sheet_name, row, col):
        """
            Write data to specified google sheet
        """

        if sheet == None or sheet == "":
            print("Sheet not specified.")
            return

        day = time.strftime("%m/%d/%Y")
        clock = time.strftime("%H:%M:%S")
        datetime = day + " - " + clock
        values = [[datetime]]

        spreadsheetId = sheet
        rangeName = sheet_name + "!" + str(row) + ":" + str(col)
        body = {
            'values': values
        }

        credentials = self.get_credentials()
        http = credentials.authorize(httplib2.Http())
        discoveryUrl = ('https://sheets.googleapis.com/$discovery/rest?'
                'version=v4')
        service = discovery.build('sheets', 'v4', http=http,
                          discoveryServiceUrl=discoveryUrl)
        result = service.spreadsheets().values().update(
            spreadsheetId=spreadsheetId, range=rangeName,
            valueInputOption="RAW", body=body).execute()

3) 在 Pyrebase 项目中的某处调用 Google 表格

from GoogleSheets import GoogleSheets

...

g = GoogleSheets()
g.write(<project-id>, <sheet-name>, <row>, <col>)

...

4) 设置一个 cron 作业以每隔一段时间运行一次 python 脚本

# every 2 minutes
*/2 * * * * /root/my_projects/file_example.py

您将需要一些基本服务器(Heroku、Digital Ocean)来运行它。

这并不广泛,因为要编写大量代码,但您可以完成基础知识。让我们现在想制作一个包。

【讨论】:

  • 不错的答案!你有更多关于使用 JavaScript SDK 的困难要求的信息吗?
  • 现在顶部有更多的见解。随意编辑。
  • 嗯......使用 Pyrebase 与这个库相比如何? sites.google.com/site/scriptsexamples/…
【解决方案2】:

您可以选择 Zapier,这是一种第 3 方服务,您可以通过它轻松集成您的 Firebase 和 Google 电子表格,反之亦然。它还获得了对谷歌文档和其他功能的一些支持。

https://zapier.com/zapbook/firebase/google-sheets/

【讨论】:

    【解决方案3】:
    猜你喜欢
    • 2016-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    • 2017-09-01
    相关资源
    最近更新 更多