在上個階段,我們已經成功讓 n8n 連接到 Google Sheets
現在,我們要來打造一個更聰明的自動化流程:自動檢查指定的 Google Drive 資料夾,如果找不到打卡用的試算表,就主動建立一個新的,並填上我們需要的標題列
建立 n8n 工作流程,實作以下功能:
在 Google Drive 中搜尋指定的試算表檔案
判斷檔案是否存在
如果不存在,則自動建立一個新的 Google Sheet
在新建立的試算表中填入標題列 (Date, Check-In, Check-Out)
上一篇已經測試過 n8n 連到「Google Sheet」了,接下來可以來建立更完整的機制,這邊先把起始的下個節點改為「Google Drive」
選擇「Search files and folders」
依然要先處理憑證
在欄位貼上我們已經在「Google Cloud」建好的 ID 跟密鑰,同樣點選「Sign in with Google」
在「Search Query」填上試算表預計想取的名稱
「Settings」分頁的「Always Output Data」切換為開啟狀態
下個節點選擇「Code」來寫點簡單的程式碼
貼上底下的程式碼來檢查是否存在
items
) 的輸出。如果輸出是空的(代表沒找到檔案),它會回傳一個 json
物件,其中 empty
的值為 true
return [
{
json: {
empty: items.length == 1 && Object.keys(items[0].json).length == 0,
},
},
];
現在我們有了 true
或 false
的判斷依據,可以利用「If」節點讓工作流程根據不同情況走不同的路徑
接著選擇「If」來判斷結果
「value1」填上
{
{
$json["empty"];
}
}
條件選擇「Boolean」的「is true」
接著在「true」的路徑接續下去,假如不存在就建立新的試算表
「Title」寫上自己想取的名字,「Sheets」的「Tittle」也是
然後可以點選畫布正下方的「Execute workflow」來試跑看看
接下來選擇「Code」來產生標題列需要的資料
程式碼如下
return [
{
json: {
Date: "Date",
"Check-In": "Check-In",
"Check-Out": "Check-Out",
},
},
];
下個節點選擇「Append row in sheet」
「Document」選擇「By ID」可以填上從前面節點產生的資料
「Mapping Column Mode」選「Map Automatically」
「Cell Format」設定「Let Google Sheets format」
{
{
$("Create spreadsheet").item.json.spreadsheetId;
}
}
所有節點都設定完成後,點擊畫布下方的「Execute workflow」來執行整個流程
如果一切順利,你會在你的 Google Drive 中看到一個全新的試算表,並且打開後會發現「Date」、「Check-In」、「Check-Out」這幾個標題已經被填上去了
恭喜,一個更強健的自動化基礎已經完成了
明天我們就來串接 iPhone 捷徑,並實作「簽到」的功能