【发布时间】:2022-01-27 20:37:37
【问题描述】:
我正在尝试在 Zapier 应用程序/集成中创建一个触发器(基于轮询),它应该在更新现有项目时运行 zap。
API 响应包含这样的数组:
[
{ id: 1, title: 'AWS', time: '2021-12-03T11:41:13.615Z', modTime: '2021-12-03T11:41:13.615Z' },
{ id: 2, title: 'GCP', time: '2021-12-03T11:41:13.615Z', modTime: '2021-12-03T11:46:13.615Z' },
]
现在,根据doc,如果一个项目将包含id 和updated_at 键,那么如果将使用上次修改的时间戳字段更新同一记录,它应该可以工作。
要触发更新,请使用列出所有项目(包括新项目和更新项目)的 API 端点,或者使用仅列出更新项目的端点。 Zapier 需要一个复合 id 字段,该字段会在项目更新时更改(理想情况下是 z.hash('md5', item.id + item.updated_at)),因此后续更新不会被 Zapier 的重复数据删除器过滤掉。
为此,我创建了一个新键 updated_at 并复制了 modTime 键的值。但此触发器仅适用于新记录,不适用于现有记录中的任何更新。我错过了什么吗?我每次都可以像这样{ id: rec.id + ':' + rec.modTime ... } 使 id 成为新的,但它也会运行我不想要的新记录。
这是我的代码:
// import statements
const listData = async (z) => {
const records = await getTaskList(z);
return records.map((rec) => ({
...rec,
updated_at: rec.modTime
}));
};
export default {
display: {
description: 'Triggers when a task will be updated.',
label: 'Task Updated',
},
key: 'task_updated',
noun: 'Updated Task',
operation: {
outputFields: outFields,
perform: listData,
sample: getSampleData(),
},
};
【问题讨论】:
标签: zapier zapier-cli