Title1
Title2
Title3
Login
Link
Search
教學頻道
中信金融管理學院
點二下資訊社
新化社區大學
GAS+購物車開發
GAS專案
GAS+購物車開發
Google表單實戰電商購物車
GAS+LineBot開發
外帶內用管理
購物車管理
線上打卡系統管理
萬用表單5
LineBot 線上書籍
PHP專案
網站程式設計-PHP(10502)
網站程式設計-PHP
PHP SMARTY 樣板引擎
SMARTY樣板
課程教材
雲端工具入門
行動應用企劃人員養成班
萬用表單5
GAS+LineBot開發
研習
萬用表單5
鐵人賽-Google Apps Script整合運用
GAS+LineBot開發
樂齡3C學習不斷電
臺東專科學校
GAS 開發 LineBot 自動接單系統
德鍵
112行動應用企劃人員養成班
111網頁前端設計工程師培訓班
110網頁前端設計工程師培訓班
網頁前端設計工程師培訓班
old
網頁前端設計與開發運用培訓班
Javascript & JQUERY
免費釋出專案
萬用表單
自動資料查詢
台南社大
113-01-雲端工具入門
112-02-AI自動管理
112-01-用QRCODE打造自動化環境
110-01-用雲端打造自動化環境
用雲端打造自動化環境
Google雲端智慧王
讓雲端工具提昇工作效率
Google 速學工作術
台南市總圖
教你如何使用LINE Bot機器人增加工作效率
Google雲端工具基礎應用
Google雲端工具進階應用
工作自動化與行銷(台南社大)
全部教材
台南市人力發展中心
Google工具應用實務班
企業課程
鐳達實業有限公司
GAS研習-20200726
中正大學-GAS研習
將軍圖書館
Google雲端工具基礎應用
Google雲端工具進階應用
南方創客
GitHub 衍伸應用
Google 應用工作術
永康社大
用雲端打造自動化環境(110-春季班)
用雲端打造自動化環境
南關社大
電腦、手機生活應用
遠端桌面
公司業務
傳送檔案
adwcleaner
W10 更新
客戶網站
最近完工
深雋設計有限公司
新化社大校務系統
靚品科技有限公司
5C Precision Co., Ltd.
BALANCE 1
RWD網站
東北關廟麵
曼馱有限公司
永宸昕有限公司
昌美實業社
形象網站
勇信機械有限公司
GAS專案
聯絡我們&案件委託
所有書籍
「鐵人賽-Google Apps Script整合運用」目錄
MarkDown
2. 在試算表儲存資料(一)
1. Google Apps Script介紹
2. 在試算表儲存資料(一)
3. 在試算表儲存資料(二)
4. 在試算表儲存資料(三)
5. 專案授權&在試算表撈出資料
6. Web 服務&API 服務
7. GAS樣版引擎
8. 建立共用函式
9. 建立路由與請求
10. 全域變數&權限
11. Bootstrap Table(一)
12. Bootstrap Table(二)
13. 表單頁面(一)
14. 表單頁面(二)
15. 表單結構
4. 在試算表儲存資料(三)
鐵人賽-Google Apps Script整合運用 ========================== ### 客戶資料管理 1.
後台管理,會有 新增(C)、編輯(U)、查詢(R)、刪除(D)。因為試算表的列指標,會有變動,如刪除或排序. 所以用流水號來代表唯一的記錄。當新增時流水號為「''」,編輯時流水號的值須在客戶工作表裡面
2.
上個單元,我們已經有辦法將資料儲存到一個儲存格,接下來會用迴圈來完成一筆記錄
3.
結構欄位:
流水號、客戶名稱、客戶電話、客戶地址、備註
流水號:自訂,這裡不使用列編號,因為列編號會因刪除、排序而有所改變 客戶電話:行動電話的開頭為 0,在試算表若無設定格式,則會視數字而不見
4.
標題
```javascript function myFunction() { let ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('day2'); let range = ws.getRange(1, 1); range.setValue('流水號'); range = ws.getRange(1, 2); range.setValue('客戶名稱'); range = ws.getRange(1, 3); range.setValue('客戶電話'); range = ws.getRange(1, 4); range.setValue('客戶地址'); range = ws.getRange(1, 5); range.setValue('備註'); } ``` 5.
函式
(function)
:通常會把處理事件的指令集合在一起,來完成事件, 分析第1項,我們可以建立一個函式
setCellData(
sheet, rowIndex, colIndex, value
)
setCellData:函式名稱,請不要重覆,若重覆則會以放在檔案列表的順序決定執行,最後面的檔案會要被執行
sheet, rowIndex, colIndex, value
:函式的參數,當我們調用函式時,可以透過參數傳遞「變數」進入函式
6.
像第1項的函式,我們會用「迴圈」來執行資料處理 for...in :
物件 與 陣列 都可使用
,物件迭代「
屬性
」、陣列迭代「
索引
」,不過迭代的變數的型態是「
字串
」,若有需要計算,記得轉型為「
數字
」
7.
例
:在 set\_head\_custom(), 調用 「setCellData()」
```javascript /*======================================== 設定客戶標題列 =========================================*/ function set_head_custom() { setCellData('day2', 1, 1, '流水號'); setCellData('day2', 1, 2, '客戶名稱'); setCellData('day2', 1, 3, '客戶電話'); setCellData('day2', 1, 4, '客戶地址'); setCellData('day2', 1, 5, '備註'); } /*======================================== 資料寫入單一儲存格 =========================================*/ function setCellData(sheet, rowIndex, colIndex, value) { let ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet); let range = ws.getRange(rowIndex, colIndex); range.setValue(value); } ``` 8.
將標題列整理成陣列資料,然後跑迴圈
```javascript /*======================================== 設定標題列 =========================================*/ function set_head_custom() { // setCellData('day2', 1, 1, '流水號'); // setCellData('day2', 1, 2, '客戶名稱'); // setCellData('day2', 1, 3, '客戶電話'); // setCellData('day2', 1, 4, '客戶地址'); // setCellData('day2', 1, 5, '備註'); let headData = ['流水號', '客戶名稱', '客戶電話', '客戶地址', '備註']; //headData[0] => '流水號' 、headData[1] => '客戶名稱' ..... let sheet = 'day2'; let rowIndex = 1; for (let i in headData) { let colIndex = Number(i) + 1;//i 型態為字串,須轉為數字做計算 setCellData(sheet, rowIndex, colIndex, headData[i]); } } ```
此時 set\_head\_custom() 其實就是 寫入一列(一筆記錄)的函式
9.
設定客戶資料
```javascript /*======================================== 設定客戶資料 =========================================*/ function set_data_custom() { let sheet = 'day2'; let rowIndex = 2; let customData = [1, '育將電腦', '0123456789', '台南市永康區大灣路158號', '備註1']; for (let i in customData) { let colIndex = Number(i) + 1;//i 型態為字串,須轉為數字做計算 setCellData(sheet, rowIndex, colIndex, customData[i]); } rowIndex = 3; customData = [2, 'Google', '1234567890', '美國', '備註2']; for (let i in customData) { let colIndex = Number(i) + 1;//i 型態為字串,須轉為數字做計算 setCellData(sheet, rowIndex, colIndex, customData[i]); } } ``` 10.
客戶資料
,有二個地方需要調整
![](https://i.imgur.com/SmsV8Ns.png)
客戶電話:第1個'0'被吃掉了,因為儲存格的格式自動變成「數字」格式,如果資料是字串,則在寫入時需要特別處理, setNumberFormat('@') :將數字或日期格式,設為「字串」。
新增資料,希望可以自動偵測寫入最後資料那列的下一列 getLastRow():取得工作表的最後列指標 getLastColumn():取得工作表的最後欄指標
**Youtube影片:**