求助:借助Make通过HubSpot API批量删除超一月历史任务
批量删除HubSpot中创建超1个月任务的技术方案
核心方案:基于HubSpot CRM API实现
HubSpot原生无批量删除任务的功能,但可以通过官方API实现自动化批量操作,以下是具体步骤:
1. 准备API访问凭证
先获取有效的API访问凭证:
- OAuth 2.0令牌(推荐长期使用):在HubSpot开发者平台创建应用,获取授权令牌,确保权限包含
crm.objects.tasks.read和crm.objects.tasks.write。 - API密钥(快速测试用):在HubSpot账户设置的「Integrations > API Key」中生成,注意密钥的权限范围。
2. 筛选符合条件的任务ID
调用HubSpot Tasks列表API,过滤出创建时间早于1个月前的任务,同时处理分页(任务量超10000条,必须分页获取):
- 计算一个月前的ISO 8601格式日期(例如
2024-04-20T00:00:00Z,可按30天或自然月计算)。 - 使用
GET /crm/v3/objects/tasks接口,通过filterGroups参数过滤createdate字段,limit设为最大100,通过after参数翻页获取所有符合条件的任务ID。
示例curl请求:
curl --request GET \ --url 'https://api.hubapi.com/crm/v3/objects/tasks?limit=100&filterGroups=[{"filters":[{"propertyName":"createdate","operator":"LT","value":"2024-04-20T00:00:00Z"}]}]' \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN'
3. 批量归档(删除)任务
HubSpot中「删除」任务实际是归档操作,使用批量归档接口POST /crm/v3/objects/tasks/batch/archive,每次最多提交100个任务ID:
示例curl请求:
curl --request POST \ --url https://api.hubapi.com/crm/v3/objects/tasks/batch/archive \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "inputs": [ {"id": "12345"}, {"id": "67890"} // 最多100个ID ] }'
4. 自动化脚本实现(一键批量操作)
用Python编写脚本可实现全自动化,还能定时执行(比如Linux cron、Windows任务计划):
import requests from datetime import datetime from dateutil.relativedelta import relativedelta # 需要安装 python-dateutil # 配置参数 ACCESS_TOKEN = "YOUR_OAUTH_TOKEN" API_BASE_URL = "https://api.hubapi.com/crm/v3/objects/tasks" # 计算自然月前的日期(比固定30天更准确) one_month_ago = (datetime.now() - relativedelta(months=1)).isoformat() + "Z" # 分页获取所有目标任务ID task_ids = [] page_after = None while True: params = { "limit": 100, "filterGroups": '[{"filters":[{"propertyName":"createdate","operator":"LT","value":"' + one_month_ago + '"}]}]' } if page_after: params["after"] = page_after response = requests.get( API_BASE_URL, headers={"Authorization": f"Bearer {ACCESS_TOKEN}"}, params=params ) response.raise_for_status() # 捕获API请求错误 data = response.json() task_ids.extend([item["id"] for item in data["results"]]) # 检查是否还有下一页 if not data.get("paging"): break page_after = data["paging"]["next"]["after"] # 批量归档任务,每100个一组 for batch_start in range(0, len(task_ids), 100): batch_ids = task_ids[batch_start:batch_start+100] archive_payload = {"inputs": [{"id": task_id} for task_id in batch_ids]} archive_response = requests.post( f"{API_BASE_URL}/batch/archive", headers={"Authorization": f"Bearer {ACCESS_TOKEN}", "Content-Type": "application/json"}, json=archive_payload ) archive_response.raise_for_status() print(f"处理批次 {batch_start//100 +1}:成功归档 {len(batch_ids)} 条任务")
安装依赖:
pip install requests python-dateutil
排查Make(原Integromat)失败原因
如果之前用Make没成功,大概率是以下问题:
- 未处理分页:Make默认只拉取第一页数据,需添加「循环分页」模块遍历所有符合条件的任务。
- 批量操作超限:HubSpot批量删除每次最多100个ID,Make中需确保每批次不超过限制。
- 权限不足:检查Make中HubSpot连接的权限,是否包含任务的读写权限。
内容的提问来源于stack exchange,提问作者Gabriel GUERIN
相关产品推荐
相关产品推荐

