在上個階段,我們已經成功讓 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 捷徑,並實作「簽到」的功能