-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy path程式碼.gs
102 lines (88 loc) · 2.9 KB
/
程式碼.gs
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
//********************** Project Config *****************************//
var rootUrl = 'Your project root URL' // Look like: https://script.google.com/macros/s/XXXXXXXXXXXXXXXXXXXXXXXXXXXXX/exec
var firebaseID = "Your FirebaseID";
var firebaseKey = "Your Firebase Prive Key";
//********************** Project Config end *****************************//
//****** Routing Table for Get method *******//
var doMap = {'index':index,'init':init, 'getOrder': getOrder};
//****** Routing Table for Post method *******//
var postMap = {'postOrder':postOrder};
var firebaseUrl = "https://"+ firebaseID+".firebaseio.com/";
//******* Route *****///
function doGet(e) {
var parameter = e.parameter;
if (typeof(parameter['do']) == 'undefined'){
parameter['do'] = 'init';
}
return doMap[parameter['do']](parameter);
}
function doPost(params) {
return postMap[params['do']](params);
}
//********************* Controllers *************************//
function index(parameter){
var id = parameter['id'];
var htmlTemp =HtmlService.createTemplateFromFile('index');
htmlTemp.url = rootUrl+'?do=index&id='+id;
htmlTemp.id = id;
htmlTemp.sheeturl = rootUrl +'?do=getOrder&id='+ id;
htmlTemp.root = rootUrl;
return htmlTemp.evaluate();
}
function init(params){
var id = Utilities.getUuid();
var htmlTemp =HtmlService.createTemplateFromFile('redirect');
htmlTemp.url = rootUrl+'?do=index&id='+id;
return htmlTemp.evaluate();
}
function getOrder(params){
var id = params['id']
var htmlTemp = HtmlService.createTemplateFromFile('order.html');
var drinkList = getOrderFromDB(id);
htmlTemp.drinkList = JSON.stringify(drinkList);
htmlTemp.url = rootUrl+'?do=index&id='+id;
return htmlTemp.evaluate();
}
function postOrder(params) {
var id = params.id;
var name = params.name;
var drink = params.drink;
var size = params.size;
var sugar = params.sugar;
var ice = params.ice;
var price = params.price;
var add = params.add;
var extraInfo = params.extraInfo;
postOrderToDB(id,name,drink,size,sugar,ice,price,add,extraInfo);
}
//********************* Interal functions *************************//
// for inculd css,js into html
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename)
.getContent();
}
// communicate with Firebase
function getOrderFromDB(orderID){
var tmp = JSON.parse(UrlFetchApp.fetch(firebaseUrl+'Orders/'+orderID+'.json'+'?auth='+firebaseKey));
drinkList = [];
for(var k in tmp) drinkList.push(tmp[k]) ;
return tmp;
}
function postOrderToDB(orderID,name,drink,size,sugar,ice,price,add,extraInfo){
var order = {
'name':name,
'drink':drink,
'size': size,
'sugar':sugar,
'ice':ice,
'price': price,
'add':add,
'ispayed': false,
'extraInfo':extraInfo
}
var options = {
'method':'post',
'payload': JSON.stringify(order)
}
UrlFetchApp.fetch(firebaseUrl+'Orders/'+orderID+'.json'+'?auth='+firebaseKey,options)
}