使用 power automate / flow 自动移动上传的单驱动器文件

Move uploaded one-drive files automatically with power automate / flow

我在 onedrive 上创建了一个文件夹,并与“拥有 link 的任何人”共享了该文件夹,授予他们上传文件的所有权限。

文件上传后,我希望自动云流将文件移动到安全位置,其他用户无法使用 link。

我创建了包含 3 个块“重复”(设置为 5 分钟)的流程,然后触发“创建文件时”(收听所述共享文件夹),最后是“移动或重命名文件”(移动“ 文件标识符”到目标“/secure/文件名”)。

这对小文件完美无缺,但大文件(假设大到足以上传超过重复出现间隔的时间)失败并且只是留在文件夹中。又过了一天,我收到一封电子邮件提醒“您的操作已被限制”。

有没有办法在尝试移动之前先检查输入文件是否已完全上传?

Ps。最初我使用了这些块的共享点版本,结果相似。更糟糕的是,它有时会导致上传失败。我还使用了创建文件 > 复制 > 删除方法,但有类似的问题,比如在上传完成之前删除它。

如果您像我一样是 Power Automate 的新手 - 公平警告 - 它有点像@#$%。

Power Automate 快速入门:

将 Power Automate 视为 Web 服务器调用的拖放“脚本”。它不是线性甚至并行编程。它的各种异步轮询。您必须决定您的流程是手动(“即时”)、自动还是按计划进行。触发器必须先行。即时将例如有一个按钮触发器。自动触发事件(如文件被修改)并安排重复计时器触发。有点明显,但您不能混合使用这些触发器。

我试图将“文件修改时”触发器放在重复触发器之后,以使文件修改触发器执行得更规律(基本计划是每 15 分钟一次)。这不会产生错误,但会导致非常不一致的行为。

限制!

这使我达到了极限。请注意您的帐户类型的限制。对于高达 20000 的基本计划,您的流程每天可以进行的 API 次调用从 1000 到 5000 不等。并且流程中的每个操作都可以算作这样的调用。如果您计划 运行 一个预定的流程,比如一天中的每 1 分钟一次,并且该流程中有四个调用,您将用一个 运行ning 流程调用 5760 个调用,并且很快就会收到警告关于被限制的电子邮件。

解决方法:如何在上传后自动移动一个驱动器的文件?

回到手头的问题,我可以 运行 一个简单的自动化流程(当文件被修改时* > 移动或重命名文件),但这只会每 15 分钟执行一次。我选择了一个预定的流程(每 3 分钟一次),它会找到文件夹中的所有文件并移动它。我还根据媒体类型过滤了一些文件,如果文件大小仍然为零(表明它仍在上传),我就不会移动,估计每个 运行 大约有 10 个操作。那是每天 480 运行s,每天总共大约 4800 个动作或 API 调用,刚好低于我的 5000 次限制。见下图。

更多限制和提示

  • *Onedrive 通话有额外限制。某些文件操作携带整个文件内容,将其限制为 < 50MB 的文件。出于这个原因,避免例如“创建文件时”,而是使用“创建文件时(仅限属性)”。
  • 注意你的流日志。有时 运行 会卡住并消耗您的 API 请求上限。您必须在日志中单击它并取消 运行.
  • 您可以在每个 action/trigger 的设置中设置并发、超时和重试限制。这对于限制 API 调用非常有帮助。

文件安全放置 - 按计划从共享文件夹移动到私人文件夹(模板/示例)