NodeJS Express JS中的Google工作表集成

jdg4fx2g  于 2022-12-26  发布在  Node.js
关注(0)|答案(1)|浏览(137)

我如何在Express JS中创建一个功能,用户可以在我们的应用中授权他们的Google帐户。这样,我们就可以从他们的帐户中获取google工作表,并在我的Express应用中显示它,如果用户在我的应用中对电子表格执行操作,它将自动保存并反映在google工作表上。

另外,是否有相关的教程和文档?

soat7uwm

soat7uwm1#

先决条件:-创建访问凭据

1.访问console.cloud.google.com
1.如果没有现有项目,请创建新项目。
1.选择项目,然后选择API和服务。
1.单击启用APIS和服务。
1.在搜索框中,搜索google sheets API然后为创建的项目启用它。
1.启用API后,选择创建凭据以访问API。在下拉菜单中,选择服务帐户。
1.在下一个屏幕中,提供所需的详细信息,然后单击“创建”。
1.接下来的两个步骤是可选的,只需单击“继续”,然后单击“完成”。
1.复制电子邮件地址并将其保存到剪贴板。单击电子邮件地址以转到下一个屏幕。在密钥下,选择创建新密钥。
1.选择JSON作为密钥类型,然后选择创建。此过程将下载密钥的JSON文件。
1.将下载的JSON文件移动到与项目相同的文件夹中,由于名称太长,我们可以将其重命名为keys.json。
文件看起来像

{
  "type": "service_account",
  "project_id": "YOUR PROJECT ID",
  "private_key_id": "YOUR PRIVATE KEY ID",
  "private_key": "YOUR PRIVATE KEY ",
  "client_email": "YOUR CLIENT EMAIL",
  "client_id": "YOUR CLIENT ID",
  "auth_uri": "YOUR AUTH URI",
  "token_uri": "YOUR TOKEN URI",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/..."
}

1.安装googleapis

npm install –save googleapis

2.根文件中需要

const { google } = require("googleapis");

3.创建身份验证对象

const auth = new google.auth.GoogleAuth({
        keyFile: "keys.json", //the key file
        //url to spreadsheets API
        scopes: "https://www.googleapis.com/auth/spreadsheets", 
    });

4.身份验证对象的客户端示例

//Auth client Object
    const authClientObject = await auth.getClient();

5. Google表单API示例

//Google sheets instance
    const googleSheetsInstance = google.sheets({ version: "v4", auth: authClientObject });

6.从URL提取电子表格ID

从Google工作表的URL获取的电子表格ID。它是电子表格URL中/d/和/edit之间的字母数字值。

// spreadsheet id
const spreadsheetId = "YOUR SPREADSHEET ID";

7.写入电子表格

通过前端写入电子表格
写入电子表格的函数接受auth对象、电子表格ID、要写入的单元格范围、用户输入的值以及包含要插入行的信息的资源对象。
资源对象有一个子值,它是要输入到工作表中的数据的数组。数组长度取决于电子表格的列数。

//write data into the google sheets
await googleSheetsInstance.spreadsheets.values.append({
    auth, //auth object
    spreadsheetId, //spreadsheet id
    range: "Sheet1!A:B", //sheet name and range of cells
    valueInputOption: "USER_ENTERED", // The information will be passed according to what the usere passes in as date, number or text
    resource: {
        values: [["Git followers tutorial", "Mia Roberts"]],
    },
});

相关问题