Google Sheets 節點 `appendOrUpdate` 在本機資料表邊界外寫入

嗨各位,

我在使用 Google Sheets 節點(n8n-nodes-base.googleSheets,typeVersion 4.5)時遇到問題,透過 appendOrUpdate 操作附加的列被寫入原生 Google Sheets 表格的邊界外,而不是寫入表格內的下一個可用列。

目標工作表使用原生 Google Sheets 表格功能(插入 → 表格)。該表格範圍約為 A1:N7,第 1 列為標題列,第 2-7 列包含類型化欄位佔位符(日期、貨幣、人物晶片)。該表格名稱為「Invoices」。

預期行為與實際行為

當新列被傳送到該節點時,它應該被插入到表格邊界內,方法是填充表格的下一個空列或擴展表格以容納新記錄,使該列繼承表格的欄位類型、格式設定和結構化引用。相反,該列被寫入表格目前資料範圍下方的第一個空列,位於表格邊界外;它不會成為表格的一部分,也不會繼承其欄位類型或格式設定。無論表格是否包含空佔位符列或僅包含已填充列,都會發生這種情況。

我已附加目標工作表的螢幕截圖以說明此問題,我很樂意分享已清理的工作流程匯出,如果能有幫助的話。感謝您的查看。

1個讚

是的,這看起來像是 n8n 將工作表視為普通範圍,而不是 Google 的較新原生表格功能。

我會使用表格內已有的空白列進行測試,並嘗試將範圍設定為表格區域。

如果它仍然在表格下方附加數據,我會將其視為 Sheets 節點的限制/bug,並使用普通範圍解決方案或直接呼叫 Sheets API。

1個讚

歡迎 @ernest28 加入我們的社群!我是 Jay,我是一位 n8n 認證創作者。

這是一個已知的限制 - n8n 的 Google Sheets 節點在 spreadsheets.values 層級呼叫 Sheets API v4,這個層級無法識別 Google Sheets 原生表格。表格功能是建立在一般工作表範圍之上,但 API 並不以相同方式公開它,因此附加一列時只會在範圍內找到下一個空行,而不是「插入」一列到表格物件中。目前唯一真正的解決方法是避免使用原生表格作為目標 - 改用一般範圍並手動套用格式設定,或如果需要讓列在表格結構內登記,可使用 Sheets API 節點搭配直接的 batchUpdate 呼叫。

1個讚

@ernest28 確認 @OMGItsDerek + @nguyenthieutoan 所說的內容 — Sheets API 的 values.append 端點(n8n 呼叫的)沒有原生表格的概念,所以該列根據設計會落在邊界外。如果仍想要表格感知的插入,解決方案是直接透過 HTTP Request 呼叫 spreadsheets.batchUpdate,並使用明確擴展表格的 insertRange 請求。

以下是解決方案的 HTTP Request 節點 JSON:

insertRange 向下移動現有儲存格 + 擴展表格物件,然後 updateCells 將你的列寫入邊界內的新建立列中。欄位類型 + 格式設定會從表格定義中繼承。根據表格目前的結束位置調整 startRowIndex/endRowIndex(或先使用 spreadsheets.get + includeGridData=false 查詢以找到即時邊界)。

1個讚