【问题标题】:Zapier Python Code Error Segment.com (usercode.py, line 9)Zapier Python 代码错误 Segment.com(usercode.py,第 9 行)
【发布时间】:2017-01-31 10:33:39
【问题描述】:

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

我不断收到以下错误:

讨价还价。我们在创建运行 python 时遇到了错误。 :-( 错误: 您的代码有错误! Traceback(最近一次调用最后一次):SyntaxError: invalid >syntax (usercode.py, line 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()

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

【问题讨论】:

    标签: python zapier segment-io


    【解决方案1】:

    感谢@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()
    

    【讨论】:

      【解决方案2】:

      这样做:

      payload =
      {}
      

      语法不正确。试试:

      payload = {}
      

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

      【讨论】:

        猜你喜欢
        • 2017-06-09
        • 2017-12-06
        • 2020-02-19
        • 1970-01-01
        • 2019-11-15
        • 1970-01-01
        • 1970-01-01
        • 2018-02-27
        • 1970-01-01
        相关资源
        最近更新 更多