Можно ли получить поток данных с перекрестными ссылками с помощью кода в Zapier. В частности, для создания строк в GSheets из 2 разных потоков данных?

Моя цель - еженедельно создавать автоматические задачи в нескольких проектах в Basecamp 3.

Для этого я использую приложение Schedule в Zapier, которое запускает создание нескольких строк в электронной таблице Google. Эти строки затем инициируют создание задач в конкретных проектах в Basecamp 3. Входными данными этих строк должны быть: имя проекта (используется для шага поиска), текст задачи.

Я использую приложение Formatter в Zapier, чтобы попытаться добиться этого. При первом действии Formatter я разделяю текст, используя запятые все имена наших проектов, и возвращаю все сегменты. Во втором Formatter я разделяю текст всего текста дел и снова возвращаю все сегменты.

Форматирование 1 Вход (проекты): AA, BB, CC, DD

Formatter 2 Input (To-Do's Text): купите, используйте, сломайте, исправьте

Цель, которую я пытаюсь достичь, проиллюстрирована на прилагаемой диаграмме. Также проиллюстрировано, что zap (как он есть) достигает с данными. Диаграммы потоков данных

Мы часто работаем с Grasshopper, подключаемым модулем Rhino 3D, используемым для параметрического моделирования и проектирования накопителей данных. В кузнечике это будет называться потоком данных с "перекрестными ссылками". Можно ли этого добиться с помощью кода в Zapier? Если да, могу ли я получить небольшую помощь?

Спасибо!

Zapier Zap GIF: https://drive.google.com/open?id=0B85_sQemABgmQVNd6MENR >


person Sebastian Murillo    schedule 17.03.2017    source источник


Ответы (1)


У меня нет разрешения на просмотр вашей ссылки на Google Диск, но я думаю, что понимаю суть того, что вы пытаетесь сделать.

Вместо использования Formatter вам, вероятно, лучше будет использовать Python, поскольку у вас будет больше контроля над тем, что возвращается. Вы можете использовать Python itertools.product для получения каждой комбинации ваших двух списков.

# zapier runs in a vanilla python environment
# so you can import standard packages
import itertools 

letters = ['AA', 'BB', 'CC', 'DD']
actions = ['buy it', 'use it', 'break it', 'fix it']

combos = list(itertools.product(letters, actions)) 
# [('AA', 'buy it'), ('AA', 'use it'), ... ('DD', 'fix it')]

Оттуда вы захотите отформатировать этот список в соответствии с ожидаемым шагом вашего действия (возможно, с помощью понимания списка, такого как [{'code': c[0], 'action': c[1]} for c in combos], и вернуть список из шага кода.

Скрытая особенность Zapier заключается в том, что если массив возвращается из шага кода, zap запускает действие для каждого элемента массива. Однако будьте осторожны, это означает, что для каждого входа в zap вывод будет выполняться 16x (что может быстро съесть предел вашей задачи).

Надеюсь, это наставит вас на правильный путь. Сообщите мне, если что-то неясно!

person xavdid    schedule 18.03.2017
comment
Спасибо! Да, извините, я получил уведомление. Я уже обнародовал это. Мне очень жаль, @xavdiv, я никогда не программировал на Python. Думаю, я понимаю логику этой идеи, но не могли бы вы объяснить немного подробнее, как я могу добиться этого в Zapier? Я не уверен, что должно быть в разделе «Входные данные» архива. И как я могу отформатировать этот список? Следует ли это сделать на том же этапе кода? Спасибо еще раз! - person Sebastian Murillo; 21.03.2017
comment
Код должен выглядеть примерно так? import itertools letters = ['AA', 'BB', 'CC', 'DD'] actions = ['buy it', 'use it', 'break it', 'fix it'] combo = list(itertools.product(letters, actions)) return = list - person Sebastian Murillo; 22.03.2017
comment
Ага! вы можете поместить это в шаг кода Python (так что там будет триггер, код и таблицы Google), и действие листов будет запускаться 16 раз в неделю. Убедитесь, что это соответствует вашей задаче! - person xavdid; 22.03.2017