【问题标题】:mailchimp3 (Python-mailchimp-api) How to set tagsmailchimp3 (Python-mailchimp-api) 如何设置标签
【发布时间】:2020-07-27 06:29:24
【问题描述】:

我试过了:

    client.lists.members.create('1111111', {
        'email_address' : 'frogger116@gmail.com',
        'status'        : 'subscribed',
        "tags": [{'name': 'frogger', 'status' : 'active'}],  
    })

然后得到:

mailchimp3.mailchimpclient.MailChimpError: {
    'type': 'http://developer.mailchimp.com/documentation/mailchimp/guides/error-glossary/',
    'title': 'Invalid Resource', 
    'status': 400, 
    'detail': 'Expected argument of type "string", "stdClass" given',
    'instance': '5ae1b966-ed35-49f1-ad32-0a39c3d63593'
}

没有“标签”行,satement 工作

【问题讨论】:

    标签: rest api mailchimp


    【解决方案1】:

    这对我有用(你需要散列电子邮件地址)

    hash = get_subscriber_hash(email_address) 
    
    data = {
            'tags': [
                {'name': 'foo', 'status': 'active'},
                {'name': 'bar', 'status': 'inactive'}
            ]
    }
    
    client.lists.members.tags.update(list_id=list_id, subscriber_hash=hash, data=data)
    

    【讨论】:

      【解决方案2】:

      我认为在最新版本中,标签只是字符串。至少,这是我使用的。

          client.lists.members.create('1111111', {
              'email_address' : 'frogger116@gmail.com',
              'status'        : 'subscribed',
              'tags': ['frogger','invaders']  
          })
      

      另外,为了确定,请确保系统中存在标签。特别是如果进行更新而不是插入。它在处理未知标签方面并不是超级一致。

      当然,还要确保“1111111”受众 ID 存在。

      补充代码

      当然,我找到了一种更好的方法来确保您想要的是使用其他方法添加到标签而不是插入。您可能需要调整以下函数,因为它们是类的一部分,但它们应该为您提供有关如何添加和删除用户标签的其他想法

          def bulkUpdateTagNamesForEmails(self, emailsToUpdate, tagNames, remove=False):
      
              audienceId = self.audienceId
      
              if remove:
                  data = {'members_to_remove':emailsToUpdate}
              else:
                  data = {'members_to_add':emailsToUpdate}
      
              segments = None
              for tagName in tagNames:
                  segId,segments = self.getSegmentIdFromTagName(tagName,segments)
                  if segId:
                      self.brResponse = self.mcClient.lists.segments.update_members(list_id=audienceId, segment_id=segId, data=data)
      
      
          def createTagNameIfNeeded(self, tagName):
      
              audienceId = self.audienceId
      
              # Check for tag name
              found = False
              segments = self.mcClient.lists.segments.all(list_id=audienceId, get_all=False) 
              for segment in segments['segments']:
                  if segment['name'] == tagName:
                      found = True
                      print("Found tag")
      
              # If not found, create it
              if not found:
                  print(f"Creating new tag {tagName}")
                  data = {'name': tagName,'static_segment': []}
                  self.mcClient.lists.segments.create(list_id=audienceId, data=data)
      
      
          def getSegmentIdFromTagName(self,reqTagName,segments=None):
              audienceId = self.audienceId
              reqId = None
              if not segments:
                  segments =     self.mcClient.lists.segments.all(list_id=audienceId, get_all=True)
              for segment in segments['segments']:
                  segName = segment['name']
                  segId = segment['id']
                  if segName == reqTagName:
                      reqId = segId
                      break
              return reqId,segments
      

      【讨论】:

        猜你喜欢
        • 2019-12-22
        • 2019-05-16
        • 2021-06-04
        • 2018-12-07
        • 2014-03-02
        • 2019-02-17
        • 1970-01-01
        • 2017-09-05
        • 2021-08-08
        相关资源
        最近更新 更多