Featured image of post 為了租房子而學的GAS(Google Apps Script)

為了租房子而學的GAS(Google Apps Script)

目標是能夠實現自動化更新591租屋網資訊QQ

最近找房子真的找得好累,偶然間在網路上看到超簡單一鍵推播 591 租屋資訊完全免 Coding-透過 Google Sheet 與 LINE Notify,想要拿來用卻發現好像

已經失效了,想要維護一下發現自己完全不懂這些東西,於是秉持著能坐就不躺,能躺就不坐的懶人心態,決定要來研究一下怎麼利用GAS跟Line Notify來達到只要有更新資料,就會發送Line通知給我的功能。

gif

快速上手

名詞定義

  • SpreadSheet:試算表,其實就是你看得的這整個Google Excel,對應到下面的Hoxton App Script Practice

  • Sheet:工作簿,工作表,就類似分頁的東西啦

夢開始的地方

反正先隨便創個試算表吧

image-20240523003617692

接著在Google Sheet的活頁簿中,選擇Apps Script

image-20240523000838281

在這邊,就會看到一個類似javascript的東西,但是是.gs結尾的,接下來會給幾段Code,讓你感受一下gs這個東西是怎麼運作的

image-20240523000919427

打印出目前操作的SpreadSheet名稱

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
function myFunction() {
  // 獲取當前活動的電子表格
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();

  // 獲取當前活動的電子表格名稱
  var spreadSheetName = spreadSheet.getName();
  
  // 輸出電子表格的名稱
  console.log(spreadSheetName);
}

image-20240523001254875

打印出底下分頁的名稱

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
function myFunction() {
  // 獲取當前活動的電子表格
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();

  // 獲取當前活動的工作表
  var sheet = spreadSheet.getActiveSheet();

  // 獲取所有工作表
  var sheets = spreadSheet.getSheets();
  
  // 輸出所有工作表的名稱
  for (var i = 0; i < sheets.length; i++) {
    console.log(sheets[i].getName());
  }
}

image-20240523001654221

把Sheet的A1欄位改成Hello World

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function myFunction() {
  // 獲取當前活動的電子表格
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();

  // 獲取當前活動的電子表格名稱
  var spreadSheetName = spreadSheet.getName();
  
  // 輸出電子表格的名稱
  console.log(spreadSheetName);

  // 獲取當前活動的工作表
  var sheet = spreadSheet.getSheetByName("我是第一個Sheet");
  
  // 在 A1 單元格中設置值為 "Hello World"
  sheet.getRange("A1").setValue("Hello World");
}

image-20240523002109492

設置自動執行的排程器

選擇Trigger

image-20240523002920526

按照下圖的順序去執行

image-20240523003031176

這樣就可以了,接下來我們寫一段Code,把A1欄位的值改成當前時間

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
function myFunction() {
  // 獲取當前活動的電子表格
  var spreadSheet = SpreadsheetApp.getActiveSpreadsheet();

  // 獲取當前活動的工作表
  var sheet = spreadSheet.getSheetByName("我是第一個Sheet");
 
  // 獲取當前日期
  var now = new Date();
  
  // 定義日期格式
  var formattedDate = Utilities.formatDate(now, Session.getScriptTimeZone(), "yyyy MM dd HH:mm:ss");

  // 在 A1 單元格中設置格式化後的日期
  sheet.getRange("A1").setValue(formattedDate);
}

image-20240523003205098

結合Line Notify 每分鐘跟我說現在幾時幾分

首先到

https://notify-bot.line.me/zh_TW/

網站申請一個個人Token

image-20240523004842678

然後會給你一個Token,複製下來

image-20240523004914300

把以下的Code貼到你的程式中

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
function myFunction() {
  // 發送消息
  sendLineNotify(new Date())

}

function sendLineNotify(message){
  var token ="abcdefghijklmnopqrstuvwxyz"
  var options =
   {
     "method"  : "post",
     "payload" : {"message" : message},
     "headers" : {"Authorization" : "Bearer " + token}
   };
   UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options);
}

接著按執行,就會發通知給你囉^_^ 有沒有很簡單呀

image-20240523005324295

Licensed under CC BY-NC-SA 4.0