首页 > 解决方案 > 在插件/应用程序脚本中拦截或获取 Google Drive 文件保存和打开的回调

问题描述

我想为 Google Drive 构建和附加组件,在文件上传时和打开/下载之前对文件进行额外的预处理/装饰。例如添加/验证数字签名,调用第 3 方服务传递文件元数据,转换为不同的 mime 类型,使用第 3 方服务生成的自定义密钥加密/解密某些文件。我查看了所有 API 并没有找到任何允许拦截文件上传/下载并进行预处理的功能(例如拦截上传的内容,将其读取为 blob,进行处理,然后将其保存到 Google Drive 文件夹,稍后当用户以对用户透明的方式下载文件,再次对文件内容进行预处理/验证并返回最终结果。

拦截内容的另一种可能性是尝试拦截文件选择/上传事件并更改文件扩展名或临时文件夹的路径,然后触发处理脚本并将结果保存到原始目的地。

我更喜欢避免通过我的自定义后端代理文件上传/下载,在插件/应用程序脚本的上下文中执行所有必需的处理。

我对 AppsScript GSUite Drive API(文件、文件夹、驱动器类)与 Google Drive v2 API 与 Changes.watch()、Channels 等的关系感到有些困惑……后者仅用于后端吗?我看不到 AppsScript API 提供的任何事件/回调概念,理论上应该在当前用户的上下文中运行我的插件。

我希望我能够在这里就 API 提出更具体的问题,但目前我正在努力理解如何为我的插件做基本的钩子来操作文件。

标签: google-apps-scriptgoogle-drive-apigoogle-workspacegsuite-addons

解决方案


你不能拦截它们。使用Drive Add-on,您只能在用户进入 Drive 主页或用户选择文件时触发功能。使用 API,您可以查看何时修改文件以获取通知,但这将在更改完成后进行,而不会拦截更改过程。

如果您使用OnItemsSelectedTrigger,则需要在用户选择文件时提示/返回卡片,在此卡片中,您可以设置按钮,当用户单击时,它可以触发不同的操作


推荐阅读