Перейти к содержимому

6. Узлы Google Drive и Google Drive Trigger

Важно

Видеоролики сейчас находятся в процессе обновления. Они могут частично не согласовываться с актуальным состоянием n8n.

В этом уроке вы узнаете, откуда данные появляются в n8n и как они могут перемещаться

Практика

Вам предстоит построить папку, которая будет создавать каталог по датам из загружаемых в неё картинок:

  1. При загрузке картинки в папку проверяется, есть ли папка вида YYYY-MM-DD Images, если нет, то она создается
  2. Файл обрабатывается — на него ставится метка с надписью
  3. Обработанный файл сохраняется в новой папке
  4. Исходный файл удаляется

Важно! . Если вы загрузите в папку несколько файлов, обработается только один. Это связано с действием узла-триггера, который реагирует только на один файл.

Перед началом создайте где-либо на Гугл-диске папку Storage — в неё вы будете скидывать файлы для обработки. И еще — сразу откройте в дополнительной вкладке Корзину Гугл-диска. В процессе отладки вы будете удалять папки “сегодняшнего дня” — их надо удалять и из корзины тоже.

Упражнения

  1. Триггер. Добавьте узел Google Drive Trigger, установите в нем проверяемый интервал 1 минута и срабатывание на изменениях в определенной папке (Changes Involving a Specific Folder). В Folder укажите From list и в списке выберите вашу папку. Пусть триггер прослушивает событие “Создание файла” (File Created).
  2. Скачивание бинарных данных. Теперь, когда процесс пошел, надо получить из загруженного файла бинарные данные. За это отвечает узел Google Drive с действием File → Download, а выбор File сделайте By ID и перетащите id из предыдущего узла. Назовите узел Скачать файл.
  3. Дата загрузки файла. Чтобы правильно назвать папку каталога, надо извлечь дату загрузки файла в формате YYYY-MM-DD. Используйте для этого Date & Time-узел для форматирования c выходным свойством date
  4. Список “сегодняшних” папок. Чтобы узнать, надо ли создавать папку с сегодняшней датой, надо узнать, если ли уже такая папка. Для этого используйте узел Гугл-диска в режиме FileList и максимальным лимитом в 1000.

    И главное — Фильтр. Узел проверяет, содержится ли (Contains) в получаемых папках и файлах название сегодняшней папки вида YYYY-MM-DD Images. Для этого надо использовать выражение: дата по входящему свойству date и дописанное слово “ Images”. Назовите узел Показать папки.

    Важно! Эта проверка показывает и папки в корзине, если они имели то же название и были удалены из папки Storage. Поэтому мы в качестве опции добавим отображение полей (Fields), и выберем ID, Name, Trashed.. Последнее поможет нам отбросить папки из корзины
  5. Избавимся от удаленных папок. Нам нужен специальный узел, который будет отфильтровывать удаленные папки. Дальше мы будем пропускать либо найденную неудаленную папку, либо пустой поток — чтобы он просигналил нам создать эту папку.

    Для этого надо поставить узел IF и установить условие, что trashed ложно. А также включите настройку Always Output Data. Тогда если есть “живая” папка, то она пойдет дальше, а если нет — то дальше пойдет пустой поток. Назовите узел Не пропустить удаленные папки.
  6. Надо ли создавать папку?. Скопируйте предыдущий IF, снимите настройку Always Output Data и подключите его к верхнему выходу предыдущего. Теперь он будет определять — будем мы создавать новую папку (нижний выход) или она уже есть. Назовите папку Папка существует?
  7. Если папки не было. Поскольку в этом случае файл загружается первый раз, то надо создать сегодняшнюю папку. Добавьте узел Гугл-диска с режимом “Папка” — “Создать”, а в качестве имени возьмите опять данные из Date & Time и добавьте “ Images”. В ID качестве родительской папки укажите id папки Storage. Назовите папку Создать папку.
  8. Добавим узел No Op. В этом узле должны оказаться данные папки, не важно, была она создана только что или Этот пустой узел собирает в себя стрелки из обоих случаев – если папки не было, и если ее только что создали. Уприте в него стрелки из предыдущих двух узлов. Назовите узел Информация о папке.
  9. Присоединение бинарных данных. По пути из-за узла Показать папки у нас потерялись данные с картинкой. Их надо вытащить, просто протянув еще одну ветку из Скачать файл в узел Merge (нижний вход). Чтобы стрелка не визуально наложилась на узлы, можете сначала вывести эту ветку в узел No Operations, его расположить снизу-справа Скачать файл, а уже из него по прямой вывести в Merge.

    В верхний вход Merge выведите данные из Информация о папке. Тип слияния нужен по позиции. В Clash Handling надо выбрать Prefer Input 1 Version, чтобы дальше пошла информация о папке для изображения, а не о закаченном файле (она идет из узла Скачать файл). Назовите узел Добавить изображение.
  10. Преобразование изображения. Следующий узел будет Edit Image, который добавит сначала оранжевый прямоугольник, а потом надпись. Параметры посмотрите внутри страницы Notion. Назовите узел Добавить надпись.
  11. Создание файла в “сегодняшней” папке. Теперь, имея обработанную картинку, её можно легко сохранить в папке каталога. Опять вам поможет узел Google Drive в режиме Файл — Загрузка. Бинарные данные должны быть включены.

    В качестве имени добавьте спереди к названию файла из триггера слово “обработано”, например, должно получиться обработано_bird.jpg. Имя файла возьмите name из триггера.

    Нужно также указать id родительской папки — конечно, это будет id сегодняшней папки.

    Назовите узел Загрузить файл.
  12. Удаление оригинала. Наконец, когда копия сохранена в каталоге, исходник надо удалить, также через узел Гугл-диска, операцию File – Delete. Здесь надо правильно указать id, взятый из триггера. Назовите узел Удалить исходный файл.

    Важно! Как только файл будет удалён, вы не сможете запускать триггер в принудительном режиме. Для этого придется сначала загрузить файл на обработку, потом можно выполнять процесс. Иначе триггер покажет ошибку.
  13. Тестирование. Если всё работает, как надо, то загрузите файл и выполните workflow. Файл исчезнет, появится (если не было) папка сегодняшнего дня и обработанный файл в нём.
  14. Сохраните и активируйте процесс, Теперь триггер будет реагировать автоматически

Отметьте все решенные задачи на странице шаблона упражнений Google Drive

Предыдущий урок → Узел Gmail
К курсу → Автоматизация с n8n: теория и практика
Мои курсы выходят в открытый доступ!