2017年中的上集,我們學會了怎麼使用 Google 試算表從 PCHome 萃取喜歡商品的價格資訊了!可喜的是竟然到2019年都還可以正常運作!如果你還不知道怎麼做,請參考前文「 用 Google 試算表追蹤網拍商品價格變化 (上)」。
使用指令碼編輯器自動填入每天的價格
接下來,我們想要試算表每天自動記錄價格,並在價格更新的時候自動寄信通知自己。示範的表格如下:
選擇工具/指令碼編輯器,會開啟一個空白的專案,裡頭只有一個空的函數
MyFunction()
。
我們修改程式碼如下,程式碼的說明直接寫在
// 註解
中。你可以直接複製以下內容到指令碼編輯器。// 將函數命名為UpdatePrice
function UpdatePrice() {
// 取得目前試算表中的名稱為 "工作表1" 物件
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("工作表1");
// 從「工作表1」這個物件中,取得已使用儲存格的範圍
var datarange = sheet.getDataRange();
// 得到目前使用到第幾個row (橫列)
var num_row = datarange.getNumRows();
// sheet.getRange(row, column) 的意思是
// 取得從左上角算起第 row 列、第 column 欄的格子
// 在此我們取得尚未使用的橫列 -- 及 num_row+1 列的第一欄
// .setValue 這個方法把內容改成現在的日期時間
sheet.getRange(num_row+1,1).setValue(new Date());
// 同時,將尚未使用橫列的第二欄設定成 C3 的值,即目前價格
sheet.getRange(num_row+1,2).setValue(sheet.getRange("C3").getValue());
}
如果一切順利,你會發現本來的工作表中多了一列,如下圖:
今天的價格被紀錄下來了!
讓自訂的 UpdatePrice()
函數定時執行
接著,我們只要要求Google 試算表,每天某個時刻自動執行
UpdatePrice()
這個函數即可!接下「指令碼編輯器」中的時鐘
圖示,設定現有專案的啟動程序。
進入設定畫面後,按下右下角的「新增觸發條件」,如下圖設定並按下儲存,即能在每天9點至10點間,自動執行方才建立的函數
UpdatePrice
,把今天的日期以及最新的價格填入試算表中!價格變化時自動寄送 Email
最後,我們希望商品價格更動時,可以自動以 Email 通知。這也很簡單,只要再修改剛才的
UpdatePrice()
函數即可!// 將函數命名為UpdatePrice
function UpdatePrice() {
// 取得目前試算表中的名稱為 "工作表1" 物件
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("工作表1");
// 從「工作表1」這個物件中,取得已使用儲存格的範圍
var datarange = sheet.getDataRange();
// 得到目前使用到第幾個row (橫列)
var num_row = datarange.getNumRows();
// sheet.getRange(row, column) 的意思是
// 取得從左上角算起第 row 列、第 column 欄的格子
// 在此我們取得尚未使用的橫列 -- 及 num_row+1 列的第一欄
// .setValue 這個方法把內容改成現在的日期時間
sheet.getRange(num_row+1,1).setValue(new Date());
// 同時,將尚未使用橫列的第二欄設定成 C3 的值,即目前價格
sheet.getRange(num_row+1,2).setValue(sheet.getRange("C3").getValue());
//當最新的價格和前一列價格不同時,傳送 mail 通知
//直接取用 MailApp.sendEmail() 方法就能寄信
//收件人: xxx@ggmail.com (請記得修改 e-mail 地址!)
//標題為: 關注的商品價格改變
//內文為: 原價格:7000,新價格:15990 之類的。
if (sheet.getRange(num_row+1,2).getValue() != sheet.getRange(num_row,2).getValue()) {
MailApp.sendEmail("xxx@ggmail.com", "關注的商品價格改變",
"原價格:"+sheet.getRange(num_row,2).getValue()+
",新價格:" +sheet.getRange(num_row+1,2).getValue());
}
}
完成後一樣按一下執行,會再要求授權權限寄送e-mail,請同意授權。如此一來,Google每天就會幫我們檢查商品價格並在有變化時主動通知囉!是不是相當方便呢?
結語
在這個大神們把工具都刻好的年代,讓電腦幫自己做一些實用的事情,已經不是難以入門的技藝了。稍做修改,就能夠同時關心多個商品的價格變化。
作為遲來的加碼,讓我們看看這一年來,我很喜歡的 Garmin Forerunner 935 價格在網購平台上如何變化呢?看來真的不是一隻很常特價的手錶呀!(這也代表當初在其他平台入手的價格,放到現在仍很划算呀!
作者已經移除這則留言。
回覆刪除作者已經移除這則留言。
回覆刪除