# 使用 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)

2. 指令碼編輯器(https://i.imgur.com/p6lRtYv.png)

程式一開始將 myFunction 改為 doGet or doPost,doGet就是前端API用get,doPost就是前端用post
1. 一開始先將 google表格分享,SpreadsheetApp.openById("1IBSxhno-sPN6vaDLhZHQTRvwFRCfHrcyxXcVO4_QgT0"),ID就輸入excel表格的一串文字,如圖紅底線。

2. 兩種方法讀取excel的工作表,用數字或者直接指定表格工作表名稱。
1. SpreadSheet.getSheets()[0] 工作表1
2. SpreadSheet.getSheets()[1] 工作表2
3. SpreadSheet.getSheetByName('工作表1')

3. Sheet.getLastRow() 讀取最後一列,Sheet.getLastColumn(),讀取最後一欄。
4. 然後其他新增,刪除,查詢,都可用JS寫法寫。
5. 接下來就可以部屬了,點選右上角的部屬,新增部屬作業,設定選網頁應用程式,執行身分選擇自己,誰可以存取選所有人,然後按下部屬按鈕即可,然後將網址複製一下,供前端使用。



6. 實作新增、刪除、查詢功能
7. 當程式寫法,可以創一個 function,來做偵錯,執行成功,查看表格也新增成功


```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)

```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
},
});
}
```