在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']
]
ss9.png

事前准备

为了使用Google Spreadsheet的API,需要进行准备工作。这项工作将在网络上完成。

大致上分为两个步骤。

    1. 在开发者控制台上创建账户并下载身份验证所需的JSON文件

 

    打开电子表格,并将(1)中的账户添加到共享列表中

谷歌开发者控制台设置

访问console.developers.google.com并单击[创建项目]

输入任意项目名称并点击[创建]后,将会跳转到这个页面。
(如果不是,请从列表中选择创建的项目并移动至此页面)。

点击[Drive API] -> 点击[启用]

ss1_1.png

点击画面左侧的选项卡,选择[认证信息] -> [创建认证信息] -> [服务账号密钥]

ss3.png
ss4.png

这是创建服务帐户密钥的界面。从”服务帐户”->”新建服务帐户”输入服务帐户名称。

选择角色 -> 项目 -> 拥有者

将[键的类型]转换为[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'

运行这段代码后,会在电子表格中创建一个新的工作表,并且可以像图片开头那样进行写入。

广告
将在 10 秒后关闭
bannerAds