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