2024年3月16日 星期六

Google Apps Script (GAS) 學習筆記 (二) : 用 Logger.log() 輸出訊息

這篇筆記是我在 2020-01-31 寫的, 寫了一半卻停下來. 3/4 日在臉書看到 Line 群組謝昌勳老師要講 GAS 的課, 所以又把之前買的 "Google Apps Script 雲端自動化與動態網頁系統實戰" 這本書拿出來啃 (此書已出第二版), 順便把這篇筆記寫完.   

本系列之前的文章參考 :


Google 雲端硬碟的試算表 (SpreadsheetApp) 除了可以取代 Excel 外, 最強的功能是有免費額度可用來製作網路爬蟲, 然後將結果儲存在試算表中; 而且還能透過觸發器來達成自動化 (類似 Linux 的 Crontab 功能). 但與 Excel 不同的是, SpreadsheetApp 使用的程式語言是源自 Javascript 的 GAS, 它相當於是 Javascript + Google 自訂物件.

在程式開發時經常需要輸出變數值以便能進行偵錯, 最常用來輸出資訊的的 UI 元件是訊息盒 (Message Box), 在網頁開發時通常使用 Javascript 的 window.alert() 將變數輸出到彈出視窗中, 或者用 document.write() 將變數輸出到網頁. 雖然都是 Javascript 執行環境, 但在 GAS 中這兩種方法都無法使用, 而是要改用 Logger.log() 方法. 


一. 建立資料夾與試算表 :    

首先在 Google 雲端硬碟下建立一個資料夾 GAS 來存放測試檔案與資料, 避免雜亂無章, 先按左上角的 "+ 新增" 按鈕 :




選擇 "新資料夾" : 




於彈出視窗中輸入資料夾名稱, 例如 GAS, 然後按 "建立" : 




這樣雲端硬碟根目錄下就產生了一個名為 GAS 的空資料夾 : 




點此 GAS 空資料夾進去 : 




再次按左上角的 "+ 新增" 按鈕, 這回點選 "" :




這時會彈出一個類似 Excel 介面的未命名試算表新視窗 :




點選左上角的 "未命名的試算表", 在輸入框中輸入試算表的新名稱, 例如 output_test :




此時切回雲端硬碟視窗就會看到此試算表檔案 :




這樣便將 GAS 要寄生的運算平台搭建好了. 


二. 使用 Logger.log() 輸出訊息 :    

GAS 程式可以單獨存在於雲端硬碟中 (副檔名為 .gs) 或者寄生於 Google Apps 例如文件, 試算表, 或表單之中, 下面是 GAS 寄生在試算表的範例 :

在上面所建立的試算表 output_test 中, 點選 "擴充功能/Apps Script" :




這樣會彈出一個未命名的 Apps Script 專案新視窗, 裡面已經預設好一個空的函式 myFunction() : 




點選上方的 "未命名專案", 給它取個新名稱, 例如 output_test, 按 "重新命名" 鈕 :



 
這樣上方的 Apps Script 專案名稱就變成 output_test 了, 接著在 myFunction() 中輸入程式碼, 這裡使用 Logger 物件的 log() 方法輸出 "Hello World!" 字串, 然後按上方的 "儲存專案" 鈕 : 




儲存完畢後上方的 "執行" 鍵才會變成可按, 按此按鈕即可執行程式碼, 結果會顯示於下方的 "執行記錄" 窗格內 : 





如果將要輸出檢視的變數傳給 Logger.log() 便能看到變數值, 可協助程式偵錯. 

注意, 如果切回雲端硬碟底下的 GAS 資料夾, 會發現根本不存在這個 "程式碼.gs" 檔案, 因為此 Script 專案是寄生在試算表 "output_test" 裡面. 

我們也可以建立獨立 (standalone) 於 App 外的 GAS 程式檔, 按雲端硬碟左上角的 "+ 新增" 按鈕, 然後點選選單底下的 "更多", 再點選 "Google Apps Script" :




這時會彈出一個視窗, 提醒用這方式建立的程式碼所有協作者均可執行, 按 "建立指令碼" :




這時會產生一個未命名的 Apps Script 專案新視窗 : 




雖然與上面試算表中建立的 Script 專案介面一模一樣, 但不同之處是此處所建立的專案會在雲端硬碟底下建立一個 .gs 檔案 (未命名的專案) : 




回到此獨立的專案視窗, 按左上角的 "未命名專案" 更改名稱為 output_test_standalone : 




這時再回到雲端硬碟視窗, 就會看到專案名稱已經改成 output_test_standalone.gs 了 :




回到專案視窗, 於 myFunction() 中同樣輸入與上面相同的程式碼 Logger.log('Hello World!'), 按上方 "儲存檔案" 後, 再按 "執行" 鈕 : 





可見結果與上面寄生於試算表 App 的程式是一樣的. 

沒有留言 :