GOOGLE SPREADSHEET�AS A DATABASE
Ajax Get, Post
With powerful Google App Script
講者: 帥到無法顯示
DEMO
MENU-1
Ajax
讓我們再認識一次吧
「Asynchronous JavaScript and XML」
(非同步的JavaScript與XML技術)
現在更常用的是”Ajaj”
就是將XML以json取代
用來做什麼的呢?�主要為get, post
抓取資料、送出資料
非Ajax莫屬?
更新網頁上的資料有兩種方法
「全部重載」、「局部重載」。
「全部重載」是必須整個刷新頁面才能看到更新後的資料;「局部重載」則是只更新要更新的部分,可以在原畫面就看到變化。
Which do you prefer?
MENU-1
何謂同步與非同步?
以大隊接力來做舉例
同步:
從一個隊伍來看,上一跑者必須將棒子交給下一跑者,下一跑者才能繼續跑。
非同步:
從比賽狀況來看,我方的跑者比別隊的跑者晚接到棒,但卻風馳電掣地超前該跑者,而提前將棒子交給我方的下一棒;反之亦然。
影響為何?
Solution:
$.when(), defer object
MENU-2
What is Google AppScript?
JavaScript + API of Google Files (Google Form, Docs, Spreadsheet and so on). 在這兩周, 我們會學常用的Google Sheet API.
Watch out!
在單純的AppScript中,並沒有jquery可以
直接使用。
優點:
● 雲端空間
● 架設簡單
● 資料視覺化程度高
● 可以用JavaScript來寫程式操
控每一格,就像Excel公式。
缺點:
● 效能較標準資料庫差
● 沒有高度穩定性
為何以Google試算表當作資料庫?
APPETIZER
常見以Google試算表當作資料庫
而未使用AppScript的情形
優點:
● 平易近人
● 建置快速
● 一般統計情形相當適合
缺點:
● 必須透過Google表單
● 不方便做資料預處理
優點:
● 平易近人
● 建置快速
● 一般統計情形相當適合
缺點:
● 亦沒有彈性
● 安全性有疑慮
THE MAIN COURSE
1. 新增一個試算表
2. 點擊「工具」 > 「指令碼編輯器」
THE MAIN COURSE
3. 儲存專案
THE MAIN COURSE
4. 編輯Google AppScript程式碼
THE MAIN COURSE
var SCRIPT_PROP = PropertiesService.getScriptProperties();
(2). 執行Setup,跳出授權請同意
function setup() {
var doc = SpreadsheetApp.getActiveSpreadsheet();
SCRIPT_PROP.setProperty("key", doc.getId());
}
(1). 取得試算表(把拔)
var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
(2). 取得特定工作表(小孩)
var SHEET_NAME = "工作表1";
var sheet = doc.getSheetByName(SHEET_NAME);
儲存程式碼後,先進行Setup步驟
如何取得試算表、工作表
也是最重要的一步
(1). 先宣告一變數指派「許可證」,該
「許可證」只在此script中有效;能
讓你攜帶資料,反正做就對了。
SERVING
5. 發佈 > 部署為網路應用程式
SERVING
THE MAIN COURSE
How to debug?
1.「選取函式」
2. 紅色箭頭處執行
3. console.log (X)
Logger.log (O)
console畫面以� ctrl + Enter叫出
THE MAIN COURSE
抓range、抓value
getLastColumn()
getLastRow()
getValue()
getValues()
getRow()
getColumn()
...etc.
Ref:
https://developers.google.com/apps-script/reference/spreadsheet/range
Sheet操作
getSheetName()
getSheetId()
appendRow(rowContents)
deleteRow(rowPosition)
protect()
...etc.
Ref:
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet
RECIPE
2.
Get the powerful script of GET and POST
https://github.com/David-Tsui/Google_Spreadsheet_RESTful/blob/master/appscript.js
1.
創建一個試算表,並把欄位設定好
第一列(row)必須是欄位名稱
3.
Setup後,發佈你的Google AppScript應用程式,並取得網址,即該試算表的API。
4.
創建一個html表單,
用Ajax來get, post你的試算表
簡易資料庫完成!
AJAX GET/POST
$.ajax({
url: api_url,
type: 'POST/GET’,
dataType: 'json',
data: json_data,
success: function(){},
fail: function(){},
always: function(){}
});
$.post(
api_url,
post_data,
function(){}
,‘json’);
標準型,可handle各種狀況
精簡型,只handle成功(success)
$.get(
api_url,
query_obj,
function(){}
,‘json’);
AJAX WHEN
一次handle多個ajax
等到各ajax都完成才繼續動作
$.when($.get(xxxx), $.get(xxx), $.post(xxx))
.done(function(response1, response2, response3) {
/* your statement */
});