使用Google推送通知监控Google Drive文件变化 | n8n工作流 | HTTP Request + Webhook
Google Drive,推送通知,n8n工作流,文件监控,自动化,Webhook,HTTP Request,数据同步

## 使用Google推送通知监控Google Drive文件变化

**厌倦了Google Drive触发器的不可靠性?不想每分钟轮询耗尽系统资源?那么这个工作流就是为您准备的!**

Google Drive因其相对简单、成本低廉和现成的集成而成为自动化的绝佳存储选择。使用Google Drive作为触发器是合乎逻辑的下一步,但许多n8n用户很快意识到内置的Google Drive触发器并不可靠。灾难!

通常的解决方法是短时间间隔轮询Google Drive搜索API,但代价是在不活动期间浪费服务器资源。理想的解决方案当然是推送通知,但它们似乎很难实现…或者真的很难吗?

这个模板证明,为Google Drive文件更改设置Google推送通知实际上并不难!使用这种方法,每当驱动器中的某些内容发生变化时,Google都会发送POST请求,这解决了事件的可靠性和资源的效率问题。

### 工作原理
1. 我们首先向Google Drive API注册一个**通知通道(webhook)**。两个关键信息是(a)推送通知的webhook URL和(b)因为我们希望限定到单个位置,所以是driveId。好消息是您可以使用HTTP调用注册任意多个,但您必须自己管理它们,Google没有通知通道的仪表板!

2. 注册数据以及startPageToken保存在`workflowStaticData`中 – 这是一个方便的持久性存储,我们可以在执行之间保存少量数据。

3. 现在,每当我们的目标Google Drive中创建或更新文件或文件夹时,Google都会向此模板中的webhook触发器发送推送通知。

4. 触发后,我们仍然需要调用Google Drive的`Changes.list`来获取检测到的实际更改事件。我们可以使用HTTP请求节点来完成此操作。

5. Changes API还将返回`nextPageToken` – 一个标记,用于确定下一次获取新批次更改的位置。重要的是我们下次从changes API请求时使用此令牌,因此我们将使用此更新值更新`workflowStaticData`。

6. 不幸的是,`changes.list` API无法按文件夹或操作过滤更改事件,因此请务必执行自己的过滤步骤以获取所需的文件。

7. 最后,对于有效的更改事件,可选地获取文件元数据,这为您提供了更多属性可供使用。例如,您可能想知道更改事件是否由n8n触发,在这种情况下,您需要检查”ModifiedByMe”值。

### 使用方法
* 从步骤1开始,填写”Set Variables”节点,然后单击手动执行触发器。这将为特定驱动器创建单个Google Drive通知通道。
* 激活工作流以开始接收来自Google Drive的事件。
* 要进行测试,请在目标驱动器上执行操作,例如创建文件。观察webhook调用涌入!
* 一旦获得所需的事件,完成此模板以对更改的文件执行某些操作。

### 要求
* Google Drive凭据。请注意,此工作流也适用于共享驱动器。

### 优化此工作流
对于批量操作,您会注意到Google逐渐开始发送越来越多的推送通知 – 有时数量达到数百个!对于云计划用户,如果同一驱动器每天进行大量更改,这很容易耗尽执行限制。一种方法是实现外部节流机制,在将事件发送到n8n之前对其进行批处理。

此节流机制超出了此模板的范围,但使用类似Supabase Edge Functions的东西很容易实现。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。