有鑑於最近的荷包實在是越來越瘦😭
所以想要知道我的錢錢都跑哪裡去了(◉ω◉)
但之前用了好幾個記帳軟體 (天X記帳 記帳X市)
都還是無法養成記帳的習慣
自己總結了兩個點就是 慢 & 懶
- 慢 : 每次消費完還要再開一個軟體 有時候還會有一些動畫 廣告
- 懶 : 有時候買個飲料或吃的 手上大包小包 實在懶得再去記帳
相信大家都有這種經驗 就是買個飲料後在等待時就是滑手機
寧願把時間拿去滑 IG 也不願意記帳 沒錯就是我
所以就想想個辦法 是不是能強迫自己記帳
那最後就發現蘋果的捷徑真的是很強大的功能
可以在電子支付之後強迫你記帳 ( 當然從錢包拿錢出來的就沒辦法做到完全自動化 )
但還是可以透過一些方法讓你記賬
那就來看一下怎麼實現這些功能吧
主要分兩個部分
Google Sheet
相信大家都對 Google 的這個服務不陌生 就是線上版的 excel
Step 1. 先建立一個 Sheet 取個名子 (我這裡統一取記帳測試)
Step 2. 建立欄位與公式
這裡分成三個部分 支出 收入 盈餘
盈餘部分的公式 則是 SUM(H2:H)-SUM(C2:C)
也就是 全收入金額 -全支出金額
跑起來效果就是以下
當然你也可以換說明文字以及位置
注意如果有修改位置 處理記帳程式碼的地方也會需要做相對應的更換 (在後面會說明)
Step 3. 處理自動化記帳流程
接著我們要寫一段程式碼
來處理當我們發送數據來這個網頁的時候要怎麼更新這個頁面
以及我們該怎麼回傳資料
首先呢 點擊這個頁面上方 “擴充功能” -> “Apps Script”
接著會出現下方畫面
接著把以下程式碼貼入
function doPost (e) {
// 取得參數
const params = JSON.parse(e.postData.contents);
const cost = params.cost; // 花費的錢
const remark = params.remark; // 註記
const people = params.people; // 支出者
const date = new Date(); // 目前時間
const dateStr = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`; // 日期格式 2022/12/12
// 打開sheet
const SpreadSheet = SpreadsheetApp.openById('YOUR ID');
// const SpreadSheet = SpreadsheetApp.openById('1NanjDytdVcRSCCox3Onjh-Qu3-LKETucW0xf8BgZ-ZY'); // 範例
const Sheet = SpreadSheet.getSheetByName('記帳測試') // 打開要編輯的工作表
const LastRow = Sheet.getLastRow(); // 取得最後一行的行數
// 存入資訊
Sheet.getRange(LastRow+1, 2).setValue(date);
Sheet.getRange(LastRow+1, 3).setValue(cost);
Sheet.getRange(LastRow+1, 4).setValue(people);
Sheet.getRange(LastRow+1, 5).setValue(remark);
const now_money = Sheet.getRange(2, 12).getValue();
// 回傳寫入成功字串
return ContentService.createTextOutput('盈餘' + now_money);
}
這裡有幾個地方必須修改
1. Sheet ID
首先 回到你的記帳本 找到你的 ID 會在網址列上 會看到 /d/OOXXOOXOOXO/edit
我們需要的就是 OOXXOOXOOXO 的部分 “/” 斜線的部分不需要
並把它貼到 程式碼中 const SpreadSheet = SpreadsheetApp.openById(‘YOUR ID’);
YOUR ID 的部分 例如你的 ID 是 12345ABCD 則這行程式碼則會變成成以下
const SpreadSheet = SpreadsheetApp.openById('12345ABCD');
2. 欄位修改
如果有修改過欄位才需要修改這段
目前欄位的設計是 “日期” “金額” “人” “備註”
這樣做設計的
對應的程式碼是以下這段
// 存入資訊
Sheet.getRange(LastRow+1, 2).setValue(date);
Sheet.getRange(LastRow+1, 3).setValue(cost);
Sheet.getRange(LastRow+1, 4).setValue(people);
Sheet.getRange(LastRow+1, 5).setValue(remark);
例如你想把 人放在金額前面 那程式碼的改法則會變成以下
// 存入資訊
Sheet.getRange(LastRow+1, 2).setValue(date);
Sheet.getRange(LastRow+1, 3).setValue(people);
Sheet.getRange(LastRow+1, 4).setValue(cost);
Sheet.getRange(LastRow+1, 5).setValue(remark);
這個部分有太多種可能就不一一列舉了
Step 4. 發佈上線
這個步驟是讓等等使用 蘋果捷徑時可以發送指令到這裡來更新的最重要一步
接著會跳出要不要允許授權 記得按 ALLOW
結束後就會跳出這個畫面
代表已經部屬上線了接著就是把這個網址複製下來
等等 Apple 捷徑製作時會用到
那 Google Sheet 的部分就到這告一個段落
那接著就是剩下捷徑的製作
蘋果捷徑製作
我已經做好一個 捷徑 大家可以直接抄走
只需要更換 URL 就好 (如果你欄位都沒有變動的話)
https://www.icloud.com/shortcuts/eca40bff5466463aaf2f60cee6f1b771
我這裡還是重頭跟大家講他要怎麼做出來
Step 1. 找到捷徑這個 APP
往下拉 在搜尋欄 找捷徑
打開後會看到這個畫面
點右上角的加號 新增捷徑
記得修改個名字
接著就是新增 整個自動化記帳的流程
第一步是要求要輸入一個支出的數字 然後把它存到變數 cost
他實際跑起來的效果就是這樣
接著呢是這個品項是甚麼
實際跑起來的效果
最後也是最重要的部分 怎麼把這個東西 傳給 Google Sheet
- 首先把剛剛複製的那串 Google Sheet 程式碼網址貼過來 到 URL 紅框處
如果欄位有修改則要注意你等等要填入的欄位的 Key Value
這兩個地方是需要對上的 才可以正常更新欄位
最後就是執行你的捷徑拉
執行完最後你應該就可以看到你正常更新你的 google sheet 啦
並且會回報你目前的盈餘
到這裡就大功告成啦 撒花~~~~
。:.゚ヽ(*´∀`)ノ゚.:。 。:.゚ヽ(*´∀`)ノ゚.:。 。:.゚ヽ(*´∀`)ノ゚.:。
至於電子支付後怎麼強迫記帳 下一篇再來說
請問可以分享google sheet 檔案嗎><