【问题标题】:How to access Cloud Firestore from Google Sheets?如何从 Google 表格访问 Cloud Firestore?
【发布时间】:2019-04-02 10:05:01
【问题描述】:

我正在尝试借助 FirestoreGoogleAppsScript 示例从 Google 表访问 Cloud Firestore 数据库,但正如第 5 点所述,我已经下载了文件,但没有找到更新 client_emailprivate_keyproject_id 在项目中。 所以请引导我继续前进。

当您按“创建”时,您的浏览器将下载一个带有您的私钥 (private_key)、服务帐户电子邮件 (client_email) 和项目 ID (project_id) 的 .json 文件。将这些值复制到您的 Google Apps 脚本中——您将需要它们来通过 Firestore 进行身份验证。

带有演示 代码.gs

function myFunction() {
  projectid: "xxx";
  key: "-----BEGIN PRIVATE KEY-----\nPrivateKeyHere\n-----END PRIVATE KEY-----\n";
  email: "xxx@xxx.iam.gserviceaccount.com";
  
  var firestore = FirestoreApp.getFirestore(email, key, projectId);
}

错误

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

【问题讨论】:

    标签: firebase google-apps-script google-sheets google-cloud-firestore


    【解决方案1】:

    您必须执行以下操作,例如在获取集合的简单函数中:

    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。这很简单,只需按照说明操作即可。

    您只需从.json 文件中复制-----BEGIN PRIVATE KEY----------END PRIVATE KEY-----\n 之间的部分。


    根据您 4 月 9 日的评论编辑:

    解决问题

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

    错误你应该正确声明你传递给getFirestore()方法的变量,如我回答的代码所示,如​​下:

    而不是做

      projectid: "fir-79c39";
    

    你应该这样做

      var projectid = "fir-79c39";
    

    您声明了一个名为 projectid 的变量,您在 getFirestore() 方法中使用该变量。 keyemail 也是如此。

    【讨论】:

    • 我已经尝试在Firestore.gs 文件中更新上述凭据,但它会引发错误Invalid argument: key (line 57, file "Authenticate"),所以你能告诉我需要在哪个文件中更新它。
    • 只需在默认的 .gs 文件中进行测试,即在您执行工具 > 脚本编辑器时看到的文件中。之后,如果需要,您可以使用多个文件使其更复杂。
    • 我在演示测试中遇到的问题错误中添加了
    • 你应该做 var email = xxxx 它类似于 JavaScript。
    • @TusharRai 你成功实现了这个例子吗?
    【解决方案2】:
    function writeDataToFirestore() {
      var projectId = "XXXXXXXX";
      var key = "-----BEGIN PRIVATE KEY-----\nXXXXXXXXXX\n-----END PRIVATE KEY-----\n";
      var email = "firestoredart2demo@example.iam.gserviceaccount.com";
      var firestore = FirestoreApp.getFirestore(email, key, projectId);
      const data = {
        "name": "test!"
      }
      firestore.createDocument("FirstCollection", data)
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      相关资源
      最近更新 更多