在Node.js中开始使用谷歌表单API
Google Sheets API使程序员能够创建能够读取、写入和更新Google电子表格的应用程序。在编程的高级阶段,Google表单可以作为一个数据库,应用程序从那里获取数据并将其渲染到UI模板。
然而,本教程将侧重于使用Node.js实现Google表单的功能。
目标
本教程旨在通过建立一个向现有Google表单中插入和读取数据的应用程序,展示可用于使用Google表单API读取和写入Google表单的功能。
前提条件
为了有效地跟上我的思路,你需要具备以下工具和技能。
- 你将需要在你的电脑上安装[Node.js]。
- 对Node.js和JavaScript有基本了解。
- 一个代码编辑器。我将使用[visual studio]code。
- 谷歌云控制台。
谷歌云控制台
谷歌云控制台是一个基于网络的平台,使开发者能够在谷歌基础设施上构建和部署应用程序。
该平台允许人们创建一个项目,并指定项目中要使用的资源,或将特定资源添加到现有项目中。
要使用Google Cloud Console上的资源,需要有一个Google账户和我们想要使用的特定资源的访问凭证。
在我们的案例中,我们将使用Google Sheets API,因此,我们需要有API的访问凭证。
创建访问凭证
我们需要一个客户ID和秘密来访问驱动器存储。
按照下面的步骤来获取客户秘密和ID。
- 访问控制台.cloud.google.com。
- 如果你没有现有的项目,创建一个新的项目。
- 选择项目并选择
APIs and services。 - 点击
ENABLE APIS AND SERVICES。 - 在搜索框中,搜索
google sheets API,然后为创建的项目启用它。 - 一旦你启用了API,选择
CREATE CREDENTIALS来访问API。在下拉菜单中,选择Service Account。 - 在下一个屏幕中,提供所需的细节,然后点击
CREATE。 - 接下来的两个步骤是可选的,只要点击
CONTINUE,然后点击DONE。 - 复制电子邮件地址并将其保存在剪贴板上。点击电子邮件地址,进入下一个屏幕。在钥匙下,选择
Create new key。 - 选择
JSON作为keyType,然后选择Create。这个过程会下载一个钥匙的JSON文件。 - 将下载的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/..."
}
创建一个谷歌工作表文件
接下来,我们创建一个Google表单文件,并与我们在上面第9步复制的电子邮件共享。通过该电子邮件,我们的应用程序将读取、编辑和更新Google表单文件的内容。
请确保将该电子邮件的角色设置为editor 。我们的Google表单文件将被用来收集文章建议及其作者,如下图所示。

开始使用
通过执行下面的命令创建一个名为google-sheet-api 的目录。
mkdir google-sheet-api
cd google-sheet-api
为了创建Node.js应用程序,我们将运行下面的命令来初始化一个空的package.json 文件。package.json 中定义了项目的有用信息,如项目版本、开发依赖性和其他相关脚本。
npm init -y
安装依赖项
接下来,我们将安装所需的依赖项。
我们将使用
express来渲染动态页面,ejs用于前台,nodemon用于开发过程中的实时更新,googleapis用于访问Google sheets api。
为了安装所需的项目依赖,我们需要在我们的vscode终端执行以下命令。
npm install –save googleapis express nodemon
接下来,我们创建应用程序的入口点。在主文件夹中创建一个名为index.js 的文件。我们将在这个文件中编写大部分的代码。
整合API
在index.js ,导入已安装的依赖关系,如下所示。
// inlcude express
const express = require("express");
//googleapis
const { google } = require("googleapis");
//initilize express
const app = express();
//set app view engine
app.set("view engine", "ejs");
我们将在index.js 文件中的post路线下编写下一组片段。下面是我们在添加这些代码之前的app.post路由的情况。
app.post("/", async (req, res) => {
const { request, name } = req.body;
})
创建认证对象
const auth = new google.auth.GoogleAuth({
keyFile: "keys.json", //the key file
//url to spreadsheets API
scopes: "https://www.googleapis.com/auth/spreadsheets",
});
auth对象的客户端实例
//Auth client Object
const authClientObject = await auth.getClient();
谷歌电子表格API的实例
//Google sheets instance
const googleSheetsInstance = google.sheets({ version: "v4", auth: authClientObject });
从URL中提取电子表格ID
要从Google表单的URL中获取电子表格ID。它是你的电子表格的URL中
/d/和/edit之间的字母数字值。
// spreadsheet id
const spreadsheetId = "YOUR SPREADSHEET ID";
写入电子表格
我们将创建一个表格来收集数据,并将其发送到我们的电子表格。该表格将有两个字段,用于填写文章标题,另一个用于填写作者。
为了创建这个表格,创建一个名为views 的文件夹,然后创建一个名为index.ejs 的文件。
在创建的文件中,添加下面的片段。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>SHEETS API NODE JS</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.1/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar navbar-dark bg-primary">
<div class="container-fluid">
<a class="navbar-brand" href="#">SECTION</a>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
</ul>
</div>
</div>
</nav><br><br>
<div class="container">
<div class="card">
<div class="card-header">
ARTICLE SUGESTION
</div>
<div class="card-body">
<form action="" method="POST">
<div class="form-group">
<label for="formGroupExampleInput">Article Title</label>
<input type="text" class="form-control" id="article" name="article" placeholder="Article">
</div>
<div class="form-group">
<label for="formGroupExampleInput2">Article Author</label>
<input type="text" class="form-control" id="author" name="author" placeholder="Author">
</div>
<br>
<button type="submit" class="btn btn-primary btn-sm">Submit</button>
</form>
</div>
</div>
</div>
</body>
</html>

写入电子表格的函数接受授权对象、电子表格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"]],
},
});
从谷歌表单文件中读取数据
从Google表单文件中读取数据的函数需要验证对象、电子表格ID和要读取的单元格范围。下面的片段用于读取文件内容。
//Read front the spreadsheet
const readData = await googleSheetsInstance.spreadsheets.values.get({
auth, //auth object
spreadsheetId, // spreadsheet id
range: "Sheet1!A:A", //range of cells to read from.
})
//send the data reae with the response
response.send(readData.data)
运行应用程序
为了测试该应用程序,我们需要启动服务器,然后通过填写表格和发送数据来进行测试。在index.js 文件中添加下面的代码块。然后在你的终端运行nodemon start 命令。
const port = 3000;
app.listen(port, ()=>{
console.log(`server started on ${port}`)
});
到你的浏览器上的localhost 3000端口,填写表格,并点击提交按钮。你应该有一个成功的消息,如下图所示,并将数据输入到谷歌表单文件中。

总结
在本教程中,我们演示了如何将Google表单API集成到Node.js应用程序中。我们创建了一个表单文件,并编写了从该文件中读取和写入的函数。
现在,请继续在你的项目中实现同样的功能。
最后的想法
谷歌表单有广泛的应用。程序员可以通过探索来最大限度地发挥其功能,也可以做出更好的应用。例如,[本教程]解释了如何使用Google sheet来记录使用QR码的考勤。
此外,正如[本教程]所解释的,我们可以使用Google sheet从金融网站上提取数据。通过适当的研究,我们可以了解如何从这些视频中提出的想法制作大规模的应用程序。