nodeJS get google 表單 to JSON,使用 google-spreadsheet

目標:

  1. 讀取 google spreadsheet
  2. 解析 每一行欄位
  3. 儲存 JSON 檔案

開始之前:

首先本次介紹的方法是類似 get json 的簡易方法。

因此我們讀取來源表單必須是公開 散佈到網路 上的形式。

所以如果表單內容較為 機敏 的話可以將表單內容下載成 csv 檔案。

並參考以下文章同樣可以將表單內容轉成 JSON 檔案 nodeJS read csv to JSON

google spreadsheet 散佈到網路

散佈到網路

google spreadsheet 散佈形式

散佈形式

google spreadsheet 表單 KEY 值

表單 KEY 值

npm 模組

接下來我們將使用 npm 上面的一個模組 google-spreadsheet 來幫助我們解析表單內容

Installation

1
npm install csvtojson --save

一個簡單的 csv to json 範例程式架構如下:[demo google 表單連結]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// require nodeJS 內建 File System 模組.
var fs = require('fs');
// google-spreadsheet modules 宣告
var GoogleSpreadsheet = require("google-spreadsheet");
// spreadsheet key is the long id in the sheets URL
// 如上圖將表單 key 值交傳給 google-spreadsheet modules 如上圖.
var my_sheet = new GoogleSpreadsheet('1eWiJ-WFuYHlxZrna2ZoGvCGwdnV3NUfVFcuiGLEFo_8');
// JSON 檔案儲存名稱
var saveFileName = 'spreadsheet.json';
// Without auth -- read only
// IMPORTANT: See note below on how to make a sheet public-readable!
// # is worksheet id - IDs start at 1
my_sheet.getRows( 1, function(err, row_data){
// 發生錯誤時
if (err) {
console.log( err );
}
console.log(row_data); //每列資料
// console.log(row_data.length); //資料總數
// 在此處理你的資料
// 儲存成 JSON
// fs.writeFile 使用 File System 的 writeFile 方法做儲存
// 傳入三個參數( 存檔名, 資料, 格式 )
fs.writeFile( saveFileName, JSON.stringify( row_data ), 'utf8');
});

小結:

許多強大的功能可能還是要透過申請 Google Developers

如果只是簡單的公開表格則可以透過以上方法快速將資料取下,做處理並結合其他 api 做成服務。

好處是 user 可以使用平易近人的 excel 輸入自己的資料,如團購、訂便單,而負責統計的工程師可以透過

enjoy!!


Reference: