owned this note
owned this note
Published
Linked with GitHub
0212-網頁前端設計與開發運用培訓班
===
###### tags: `德鍵`
---
一、將資料寫入試算表
---
1. rowData 解構
v41.js
日期格式
2. 實做
調用
```javascript=
appendRow(rowdata);
```
gs
```javascript=
//試算表變數
var SpreadsheetAppId = "SpreadsheetAppId";
var sheetName = '總表';
function appendRow(rowdata){
//用id取得試算表
var ss = SpreadsheetApp.openById(SpreadsheetAppId);
//用工作表名稱設定工作表
var Sheet = ss.getSheetByName(sheetName);
//設定工作表 0 1 2 ....
//var Sheet = ss.getSheets()[0];//第1個工作表
//插入第2行空白
var row = 2;
Sheet.insertRowBefore(row);
//
//寫入記錄
//時間戳記 桌號 雞腿飯-90元 雞排飯-80元 排骨飯-70元 招牌飯-60元 備註 合計
var data = [rowdata['時間戳記'],rowdata['桌號'],rowdata['雞腿飯-90元'],rowdata['雞排飯-80元'],rowdata['排骨飯-70元'],rowdata['招牌飯-60元'],rowdata['備註'],rowdata['合計']];
data.forEach(function(item,index){
Sheet.getRange(row, index+1).setValue(item);
});
}
```
3. 講解
二、前台製作合計
---
1. 範例:https://blog.ugm.com.tw/google1/20200211_home.html
2. [HTML DOM Event 對象](https://www.w3school.com.cn/jsref/dom_obj_event.asp)
3. 取得DOM元素
```
document.getElementsByClassName("className");//取得class
document.getElementById("Id");//取得id
innerText
innerHtml
parseInt()
```
下午
---
1. 在桌號下面
```htmlmixed=
<!--合計-->
<div class="col-sm-3">
<div class="form-group">
<label>合計</label>
<input type="text" class="form-control" name="" id="" value="" readonly>
</div>
</div>
```
2. 計算金額的函式
```javascript=
function calTotal(){
//document.getElementsByClassName("amount")[0].value //取數量
//document.getElementsByClassName("title")[0].innerText //取標題
var amounts = document.getElementsByClassName("amount");
var titles = document.getElementsByClassName("title");
var total = 0;
for(var i=0; i < amounts.length; i++){
var amount = document.getElementsByClassName("amount")[i].value;
var title = document.getElementsByClassName("title")[i].innerText //取標題
var subArr = title.split("-");
var price = parseInt(subArr[1]);
total += amount * price;
}
console.log(total);
}
```
3. 調用函數
```
onchange="calTotal();"
```
4. 範例網址:https://github.com/tawan158/google1
5. 「點餐-20200111」gs
```javascript=
//表單變數
var googleFormID = "googleFormID";
function FormResponse(){
// 通過ID打開一個表單,並記錄對每個問題的回答。
var form = FormApp.openById(googleFormID);
var formResponses = form.getResponses();//得到所有回應
//---- 所有回應
for (var i = 0; i < formResponses.length; i++) {
var formResponse = formResponses[i];//每一筆回應
var itemResponses = formResponse.getItemResponses();//回應內容
var formResponseTime = formResponse.getTimestamp();//時間戳記
//var formRespondentEmail = formResponse.getRespondentEmail();//取得表單上「電子郵件地址」
//----宣告試算表每列變數----
var rowdata = {};
var total = 0;
//其他自訂欄位(前)
//rowdata["填報標題"] = "";//填報標題
rowdata["時間戳記"] = formResponseTime;//表單回應時間
//rowdata['電子郵件地址'] = formRespondentEmail;//電子郵件地址
//----取得單筆回應資料
for (var j = 0; j < itemResponses.length; j++) {
var itemResponse = itemResponses[j];
var title = itemResponse.getItem().getTitle();//問題名稱
var value = itemResponse.getResponse();//填報內容
rowdata[title] = value;
//時間戳記 桌號 雞腿飯-90元 雞排飯-80元 排骨飯-70元 招牌飯-60元 備註
if(title == "雞腿飯-90元" || title == "雞排飯-80元" || title == "排骨飯-70元" || title == "招牌飯-60元" ){
var subTotal = title.split("-");
total += parseInt(subTotal[1]) * value;
}
}
//其他自訂欄位(尾)
//----單筆回應資料end
rowdata['合計'] = total;
//----單筆要做的事情
sendToLine(rowdata);//LineNotify通知
appendRow(rowdata);
//----單筆要做的事情 end
}
//刪除回應問題
form.deleteAllResponses();
}
//填入Line Notify 權杖
var lineToken = "Line Notify 權杖";
function sendToLine(rowdata){
//整理
var message = "\n";
for (var key in rowdata){
if( key == "時間戳記"){
rowdata[key] = Utilities.formatDate(new Date(rowdata[key]),"GMT+08:00","yyyy/MM/dd/ H:mm");
}
// 時間戳記 桌號 雞腿飯-90元 雞排飯-80元 排骨飯-70元 招牌飯-60元 備註 合計
if( key == "雞腿飯-90元" || key == "雞排飯-80元" || key == "排骨飯-70元" || key == "招牌飯-60元" ){
if(rowdata[key] >0){
message += key + " : " + rowdata[key] + "\n";
}
} else{
message += key + " : " + rowdata[key] + "\n";
}
}
var options =
{
method : "post",
payload : "message=" + message,
headers : {"Authorization" : "Bearer "+ lineToken},
muteHttpExceptions : true
};
UrlFetchApp.fetch("https://notify-api.line.me/api/notify",options);
}
//試算表變數
var SpreadsheetAppId = "SpreadsheetAppId";
var sheetName = '總表';
function appendRow(rowdata){
//用id取得試算表
var ss = SpreadsheetApp.openById(SpreadsheetAppId);
//用工作表名稱設定工作表
var Sheet = ss.getSheetByName(sheetName);
//設定工作表 0 1 2 ....
//var Sheet = ss.getSheets()[0];//第1個工作表
//插入第2行空白
var row = 2;
Sheet.insertRowBefore(row);
//
//寫入記錄
//時間戳記 桌號 雞腿飯-90元 雞排飯-80元 排骨飯-70元 招牌飯-60元 備註 合計
var data = [rowdata['時間戳記'],rowdata['桌號'],rowdata['雞腿飯-90元'],rowdata['雞排飯-80元'],rowdata['排骨飯-70元'],rowdata['招牌飯-60元'],rowdata['備註'],rowdata['合計']];
data.forEach(function(item,index){
Sheet.getRange(row, index+1).setValue(item);
});
}
```
6.
三、 如何製作API
---
1. 使用 GET 方法,一定得用 doGet 的 function 名稱。
[參考](https://www.oxxostudio.tw/articles/201805/backend-apps-script.html)
2. doPost