1

我正在尝试使用 Zapier 上的 Python 代码操作来获取 Campaign Monitor Open 事件并通过 POST API 将数据传输到 Segment.com。

我不断收到以下错误

讨价还价。我们在创建运行 python 时遇到了错误。:-( 错误:您的代码有错误!回溯(最近一次调用最后一次):SyntaxError:无效>语法(usercode.py,第 9 行)

这是现有的设置屏幕截图(屏蔽身份验证代码): Zapier Zap Setup for Code

返回错误的 Python 代码是:

url = 'https://api.segment.io/v1/track/'
payload =
{
  'userId': input_data['email'],
  'event': 'Email Opened',
  'properties': {
    'listid': input_data['listid'],
    'open_date': input_data['date'],
    'cm_id': input_data['cm_id'],
    'open_city': input_data['city'],
    'open_region': input_data['region'],
    'open_country': input_data['country'],
    'open_lat': input_data['lat'],
    'open_long': input_data['long'],
    'open_country_code': input_data['country_code']
  },
  'context': {
    'ip': input_data['ip']
  }
}

headers = {
    'content-type': 'application/json',
    'Authorization': 'Basic BASE64ENCODEDWRITEKEY'
}

response = requests.post(url, data=json.dumps(payload), headers=headers)
response.raise_for_status()
return response.json()

关于错误可能引用什么的任何建议?关于如何更好地实现这一目标的总体建议?

4

2 回答 2

0

这样做:

payload =
{}

是不正确的语法。尝试:

payload = {}

我还建议使用 linter - 也许http://infoheap.com/python-lint-online/会对您有所帮助!

于 2016-09-22T18:11:16.103 回答
0

感谢@Bryan Helmig。除了 import json 之外,该语法还解决了该问题。对于那些感兴趣的人,这有效...

import json
import requests
url = 'https://api.segment.io/v1/track/'
payload = {
  'userId': input_data['email'],
  'event': 'Email Opened',
  'properties': {
    'listid': input_data['listid'],
    'open_date': input_data['date'],
    'cm_id': input_data['cm_id'],
    'open_city': input_data['city'],
    'open_region': input_data['region'],
    'open_country': input_data['country'],
    'open_lat': input_data['lat'],
    'open_long': input_data['long'],
    'open_country_code': input_data['country_code']
  },
  'context': {
    'ip': input_data['ip']
  }
       }

headers = {
    'content-type': 'application/json',
    'Authorization': 'Basic WRITEKEYHERE'
}

response = requests.post(url, data=json.dumps(payload), headers=headers)
response.raise_for_status()
于 2016-09-22T18:47:07.543 回答