在GoogleSpreadsheet中查看Node.js的Object的方法
我经常使用Nodejs来创建控制台应用程序等。
当将结果输出到控制台时,经常会遇到不易阅读的情况。
然而,将其转换成易读的HTML形式也很麻烦。
顺带一提,好像有Google Spreadsheet的API,所以我尝试使用了。
目标
items = [
['Alex',17,'1234-5678']
['Billy',33,'1357-2468']
['Charlie',28,'3333-3333']
['Daniel',15,'5555-5555']
['Edward',63,'9999-9999']
]
事前准备
为了使用Google Spreadsheet的API,需要进行准备工作。这项工作将在网络上完成。
大致上分为两个步骤。
-
- 在开发者控制台上创建账户并下载身份验证所需的JSON文件
- 打开电子表格,并将(1)中的账户添加到共享列表中
谷歌开发者控制台设置
访问console.developers.google.com并单击[创建项目]
输入任意项目名称并点击[创建]后,将会跳转到这个页面。
(如果不是,请从列表中选择创建的项目并移动至此页面)。
点击[Drive API] -> 点击[启用]
点击画面左侧的选项卡,选择[认证信息] -> [创建认证信息] -> [服务账号密钥]
这是创建服务帐户密钥的界面。从”服务帐户”->”新建服务帐户”输入服务帐户名称。
选择角色 -> 项目 -> 拥有者
将[键的类型]转换为[JSON]并创建。
将包含身份验证信息的JSON文件下载到以上位置,然后将其移动到Nodejs项目中。
試算表的设置选项
1. 请记下用于认证的电子邮件地址。
请先打开刚刚下载的JSON文件,将其客户邮件地址部分记下来。
“client_email”: “myname@gss-test-xxxxxx.iam.gserviceaccount.com”
客户邮箱: “myname@gss-test-xxxxxx.iam.gserviceaccount.com”
2. 请记下电子表格的ID。
打开Google表格并新建一个空白表格。
请把Spreadsheet-ID从URL栏记下来,我们将在Node.js中使用它。
https://docs.google.com/spreadsheets/d/[Spreadsheet-ID]/edit#gid=0
使用(1)的验证用电子邮件地址进行共享
点击画面右边的“共享”按钮。如果电子表格名称仍然是默认状态,系统会要求您进行命名。
请复制并粘贴(1)的电子邮件地址后点击[发送]按钮。
准备工作就到这里了。
Nodejs: 节点js
终于开始写Node代码了。
这里用CoffeeScript写的。
因为有一个很好的 npm 包装器,所以我会使用它。
Google Spreadsheets 数据 API 适用于 Node.js
在处理回调函数时,还可以使用方便的async来完成。
npm install -S google-spreadsheet async
如果你查看node-google-spreadsheet的README,你应该就明白如何使用了。但是我简单介绍一下。
这次主要使用 node-google-spreadsheet 的功能有三个方面。
使用谷歌电子表格.使用服务帐户身份验证(account_info, 回调函数)
这个方法负责认证部分。不过仅仅是传递之前提到的认证JSON文件而已。
Google电子表格添加工作表(选项,回调函数)
可以添加一个新的工作表。
您可以选择指定工作表的标题、行数和列数。
以下是对上述内容的中文本地化改写:
选项(可选)
标题 – 新工作表的标题,在文档中必须是唯一的(默认为’工作表 {时间戳}’)
行数 – 行数(默认为50)
列数 – 列数(默认为20)
标题行 – 以字符串键组成的数组,放置在第一行中。
重点在于”headers”部分。例如,设置如下:
headers: [‘name’,’age’,’phone’]
这样做的话,在工作表的第一行会有这些项目。
而当使用”addRow”等函数时,headers中设置的项目将直接成为属性。
回调函数有两个参数:error 和 sheet,其中第二个参数 sheet 是 SpreadsheetWorksheet 类。
电子表格工作表.addRow(新行, 回调函数)
在工作表中添加新行。
可以将之前使用addWorksheet函数设定的headers作为属性使用。
rowData =
name: item[0]
age: item[1]
phone: item[2]
sheet.addRow(rowData, callback)
例子
如果你认为CoffeeScript之类的东西太不可思议,那么请点击这里。
settings =
# 解説の都合上別にしてありますが、もちろんコード内にベタ書きでも構いません。
spreadsheetID: 'xxxxxx_xxxxxxxxxxxxx__xxx_xxxxxxxxxx'
jsonFilePath: '../../gss-test-xxxxxxxxxx.json'
items = [
['Alex',17,'1234-5678']
['Billy',33,'1357-2468']
['Charlie',28,'3333-3333']
['Daniel',15,'5555-5555']
['Edward',63,'9999-9999']
]
GoogleSpreadsheet = require('google-spreadsheet')
async = require('async')
doc = new GoogleSpreadsheet(settings.spreadsheetID)
creds = require(settings.jsonFilePath)
doc.useServiceAccountAuth creds, (err)->
throw err if err
opt =
title: 'sample sheet'
headers: ['name','age','phone']
doc.addWorksheet opt, (err, sheet) ->
throw err if err
async.eachSeries items, (item, next) ->
console.log item
rowData =
name: item[0]
age: item[1]
phone: item[2]
sheet.addRow(rowData, next)
,(err)->
console.log 'complete'
运行这段代码后,会在电子表格中创建一个新的工作表,并且可以像图片开头那样进行写入。