# 使用 google excel 當作簡易資料庫 link8fish@gmail.com [線上前端網址](https://funfish22.github.io/google_excel/index.html) [excel表格](https://docs.google.com/spreadsheets/d/1IBSxhno-sPN6vaDLhZHQTRvwFRCfHrcyxXcVO4_QgT0/edit#gid=0) 1. 創立表格,工具->指令碼編輯器(https://i.imgur.com/JdhPIPe.png) ![](https://i.imgur.com/JdhPIPe.png) 2. 指令碼編輯器(https://i.imgur.com/p6lRtYv.png) ![](https://i.imgur.com/p6lRtYv.png) 程式一開始將 myFunction 改為 doGet or doPost,doGet就是前端API用get,doPost就是前端用post 1. 一開始先將 google表格分享,SpreadsheetApp.openById("1IBSxhno-sPN6vaDLhZHQTRvwFRCfHrcyxXcVO4_QgT0"),ID就輸入excel表格的一串文字,如圖紅底線。 ![](https://i.imgur.com/Blztlo4.png) 2. 兩種方法讀取excel的工作表,用數字或者直接指定表格工作表名稱。 1. SpreadSheet.getSheets()[0] 工作表1 2. SpreadSheet.getSheets()[1] 工作表2 3. SpreadSheet.getSheetByName('工作表1') ![](https://i.imgur.com/WMWzx6V.png) 3. Sheet.getLastRow() 讀取最後一列,Sheet.getLastColumn(),讀取最後一欄。 4. 然後其他新增,刪除,查詢,都可用JS寫法寫。 5. 接下來就可以部屬了,點選右上角的部屬,新增部屬作業,設定選網頁應用程式,執行身分選擇自己,誰可以存取選所有人,然後按下部屬按鈕即可,然後將網址複製一下,供前端使用。 ![](https://i.imgur.com/1KrHKRV.png) ![](https://i.imgur.com/Q94lKmk.png) ![](https://i.imgur.com/ZQQ3fMN.png) 6. 實作新增、刪除、查詢功能 7. 當程式寫法,可以創一個 function,來做偵錯,執行成功,查看表格也新增成功 ![](https://i.imgur.com/Vk66mdd.png) ![](https://i.imgur.com/M5aRL1P.png) ```javascript= function debug() { var a = doPost( { parameter : { name: 1, phone: 2, adress : 2, action: 'add' } }); } ``` ```javascript= function doGet() { //請輸入自己的sheet id var SpreadSheet = SpreadsheetApp.openById("1IBSxhno-sPN6vaDLhZHQTRvwFRCfHrcyxXcVO4_QgT0"); var Sheet = SpreadSheet.getSheets()[0]; // SpreadSheet.getSheets()[0] 工作表1 SpreadSheet.getSheets()[1] 工作表2 // var SheetName = SpreadSheet.getSheetByName(name); var LastRow = Sheet.getLastRow(); // 最後一列 var LastCol = Sheet.getLastColumn() // 最後一欄 console.log('LastRow', LastRow) var data = []; var listAll = Sheet.getSheetValues(1, 1, LastRow, LastCol); //第一列,第一欄,最後一列 for (var i=0; i < listAll.length; i++) { data.push({ data: listAll[i], index: i }); } // 回傳陣列 return ContentService.createTextOutput(JSON.stringify(data)).setMimeType( ContentService.MimeType.JSON ); } function doPost(e) { //取得參數 var params = e.parameter; var name = params.name; var phone = params.phone; var adress = params.adress; var action = params.action; var searchName = params.searchName; var deleteId = params.deleteId; //sheet資訊 //請輸入自己的sheet id var SpreadSheet = SpreadsheetApp.openById("1IBSxhno-sPN6vaDLhZHQTRvwFRCfHrcyxXcVO4_QgT0"); // 試算表的ID var Sheet = SpreadSheet.getSheets()[0]; // SpreadSheet.getSheets()[0] 工作表1 SpreadSheet.getSheets()[1] 工作表2 var LastRow = Sheet.getLastRow(); var LastCol = Sheet.getLastColumn() console.log('LastRow', LastRow) // 最後一列 console.log('LastCol', LastCol) // 最後一欄 // 使用帶入不同的參數,做不同的事情 // 新增資料 if(action === 'add') { //存入資訊 //getRange(LastRow+1, 1) // 最後一列 + 1,存入的欄位 Sheet.getRange(LastRow+1, 1).setValue(name); // 最後一列,第一欄新增姓名資料 Sheet.getRange(LastRow+1, 2).setValue(phone); // 最後一列,第一欄新增電話資料 Sheet.getRange(LastRow+1, 3).setValue(adress); // 最後一列,第一欄新增地址資料 //回傳資訊 return ContentService.createTextOutput("成功"); } // 搜尋資料 if(action === 'search') { var data = []; var listAll = Sheet.getSheetValues(1, 1, LastRow, LastCol); //第一列,第一欄,最後一列,第3欄 for (var i=0; i < listAll.length; i++) { if(listAll[i][0].indexOf(searchName) === 0) { data.push({ data: listAll[i], index: i }); console.log('data', data) } } // 回傳陣列 return ContentService.createTextOutput(JSON.stringify(data)).setMimeType( ContentService.MimeType.JSON ); } if(action === 'delete') { //刪除 Sheet.deleteRow(deleteId); // 刪除第幾列整列資料 //回傳資訊 return ContentService.createTextOutput("成功"); } return ContentService.createTextOutput("失敗"); } ``` 8. 前端,api網址,就是剛剛部屬複製的網址(https://i.imgur.com/IqvE8On.png) ![](https://i.imgur.com/IqvE8On.png) ```javascript= function searchAll() { $.ajax({ url: "https://script.google.com/macros/s/AKfycbwa-x0rnFLSIZ4OxBhzDeFzdetQ0qdMcM4S2L4e_1Nil7WFwd2QsR7HSK620vqjj_37/exec", type: "GET", success: function(response) { response.forEach((element, index) => { allDom += `<div>第${index + 1}筆,姓名:${element.data[0]},電話:${element.data[1]},地址:${element.data[2]}</div>` }) all.innerHTML = allDom }, }); } ```