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
7. GAS樣版引擎
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. 表單結構
9. 建立路由與請求
鐵人賽-Google Apps Script整合運用 ========================== 渲染畫面函式 ------ 1. 分析 ![](https://i.imgur.com/qzNLGP7.png) 2. 函式名稱:render(file, argsObject, title='') 3. 主樣版:必須傳 title 4. 子樣版:title='' 或不傳 5. 函式 ```javascript /*======================================== 渲染網頁 =========================================*/ function render(file, argsObject, title='') { let tmp = HtmlService.createTemplateFromFile(file); for(let i in argsObject){ tmp[i] = argsObject[i]; } if(title){//主樣版 return tmp.evaluate().setTitle(title).setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL).addMetaTag('viewport', 'width=device-width, initial-scale=1'); }else{//子樣版 return tmp.evaluate().getContent(); } } ``` 6. 調用 ```javascript function doGet(e){ let title = '育將電腦'; let menu = render('menu',{title: title}); return render('index',{menu: menu}, title); } ``` 客戶管理 custom.gs -------------- 將「程式碼.gs」有關「custom」的函式,通通搬到「prog\_custom.gs」 ```javascript /*======================================== 取得結構 =========================================*/ function get_stru_custom() { let stru = [ { "title": "流水號", "type": "" }, { "title": "客戶名稱", "type": "文字" }, { "title": "客戶電話", "type": "文字" }, { "title": "客戶地址", "type": "文字" }, { "title": "備註", "type": "文字" } ]; return stru; } /*======================================== 取得標題列 =========================================*/ function get_head_custom() { let ss = SpreadsheetApp.getActiveSpreadsheet() let ws = ss.getSheetByName('day2'); let headData = ws.getSheetValues(1, 1, 1, ws.getLastColumn())[0]; console.log(headData); return headData; } /*======================================== 取得資料 =========================================*/ function get_data_custom() { let ss = SpreadsheetApp.getActiveSpreadsheet() let ws = ss.getSheetByName('day2'); if (ws.getLastRow() < 2) return [];//無資料 let data_custom = ws.getSheetValues(2, 1, ws.getLastRow() - 1, ws.getLastColumn()); console.log(data_custom[0]); return data_custom; } /*===================================== 設定標題 =====================================*/ function set_head_custom() { let stru = get_stru_custom(); let sheet = 'day2'; let rowIndex = 1; for (let i in stru) { let colIndex = Number(i) + 1; setCellData(sheet, rowIndex, colIndex, stru[i]['title']); } } /*======================================== 設定客戶資料 =========================================*/ function set_data_custom() { let customData = [1, '育將電腦', '0123456789', '台南市永康區大灣路158號', '備註1']; let sheet = 'day2'; let rowIndex = 2; for (let i in customData) { let colIndex = Number(i) + 1; setCellData(sheet, rowIndex, colIndex, customData[i]); } customData = [2, 'Google', '1234567890', '美國', '備註2']; rowIndex = 3; for (let i in customData) { let colIndex = Number(i) + 1; setCellData(sheet, rowIndex, colIndex, customData[i]); } } ``` 指令碼屬性 ----- 在GAS除了用試算表來儲存資料,還有指令碼屬性,可以儲存。 Google Apps Script(GAS)中的指令碼屬性(Script Properties)用於存儲與腳本項目相關的全局配置設置或需要在腳本執行之間保留的數據。 1. 取得指令碼屬性服務:通常是全域變數,故請將此方法放在函式外面,讓其在任何地方皆可使用 ```javascript var SCRIPT_PROP = PropertiesService.getScriptProperties(); ``` 2. 設定 ```javascript setProperty(屬性,值) ``` 3. 取得 ```javascript getProperty(屬性) ``` Session ------- 1. Session.getActiveUser().getEmail():取得當前用戶的電子郵件,不過我們若部署為「網站應用程式」且權授是所有人,它僅能取部署人的email 2. 通過第1項,於我們可以將「管理員」email儲存於「指令碼屬性」,並判斷 Session.getActiveUser().getEmail() 是否與指令碼屬性 相等,若是則是管理員 3. 建立 setup(),並讓管理員在建立副本後,直接執行它 ```javascript /*===================================== 安裝程式 =====================================*/ function setup() { //管理員email SCRIPT_PROP.setProperty("adminEmail", Session.getActiveUser().getEmail()); } ``` 4. 判斷是否為管理員 ```javascript // 權限 let isAdmin = SCRIPT_PROP.getProperty("adminEmail") === Session.getActiveUser().getEmail() ? true : false; ``` 5. 在將isAdmin 傳至樣版判斷,是否出現管理員選單