Andy Wallace
Andy Wallace

Reputation: 689

Batch processing Google Contact Groups with API (php)

I'm trying to do batch processing of Google Contact groups. I have batch processing working for the actual contacts, but groups are not behaving. The XML that I send to Google is:

<?xml version='1.0' encoding='UTF-8'?>
<feed xmlns='http://www.w3.org/2005/Atom' 
      xmlns:gContact='http://schemas.google.com/contact/2008'
      xmlns:gd='http://schemas.google.com/g/2005'
      xmlns:batch='http://schemas.google.com/gdata/batch'>
    <entry>
        <batch:id>create</batch:id>
        <batch:operation type='insert'/>
        <category scheme='http://schemas.google.com/g/2005#kind' 
                  term='http://schemas.google.com/contact/2008#group'/>
        <title type='text'>Status:Followup 1</title>
        <content type='text'>Status:Followup 1</content>
    </entry>
</feed>

The response I got back from google was:

<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" 
      xmlns:batch="http://schemas.google.com/gdata/batch" 
      xmlns:gContact="http://schemas.google.com/contact/2008" 
      xmlns:gd="http://schemas.google.com/g/2005">
    <id>https://www.google.com/m8/feeds/contacts/awallace%40ihouseweb.com/full/batch/1430425819721000</id>
    <updated>2015-04-30T20:30:19.721Z</updated>
    <title type="text">Batch Feed</title>
    <entry gd:etag="&quot;SHs-ezVSLit7I2A9XRVTFE8PTwU.&quot;">
        <batch:id>create</batch:id>
        <batch:operation type="insert"/>
        <batch:status code="201" reason="Created."/>
        <id>http://www.google.com/m8/feeds/contacts/awallace%40ihouseweb.com/base/4b9f4f69095d670d</id>
        <updated>2015-04-30T20:30:19.553Z</updated>
        <app:edited xmlns:app="http://www.w3.org/2007/app">2015-04-30T20:30:19.553Z</app:edited>
        <category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#contact"/>
        <title/>
        <content>Status:Followup 1</content>
        <link rel="http://schemas.google.com/contacts/2008/rel#photo" type="image/*" 
              href="https://www.google.com/m8/feeds/photos/media/awallace%40ihouseweb.com/4b9f4f69095d670d"/>
        <link rel="self" type="application/atom+xml" href="https://www.google.com/m8/feeds/contacts/awallace%40ihouseweb.com/full/4b9f4f69095d670d"/>
        <link rel="edit" type="application/atom+xml" 
              href="https://www.google.com/m8/feeds/contacts/awallace%40ihouseweb.com/full/4b9f4f69095d670d"/>
    </entry>
</feed>

(note, there were actually 4 groups in my batch, but the results were identical).

The groups in my account were unchanged. I have successfully added and deleted groups one at a time (without the batch syntax/url). The result XML here says explicitly that the group was created (), but the title element is empty in the return. ()

Any ideas?

Thanks, Andy

Upvotes: 0

Views: 364

Answers (1)

amburnside
amburnside

Reputation: 1903

I had a similar problem when batch creating groups. My problem was I had no entry for gd:extendedProperty:

eg:

<?xml version="1.0"?>
<feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns:gd="http://schemas.google.com/g/2005" xmlns:gContact="http://schemas.google.com/contact/2008" xmlns:batch="http://schemas.google.com/gdata/batch">
 <entry>
   <batch:id>create</batch:id>
   <batch:operation type="insert"/>
   <atom:category scheme="http://schemas.google.com/g/2005#kind" term="http://schemas.google.com/contact/2008#group"/>
   <atom:title type="text">Test 1</atom:title>
   <gd:extendedProperty name="Test 1">
     <info>Test 1</info>
   </gd:extendedProperty>
  </entry>
...
</feed>

The XML markup you have appears to be for updating an existing group. Have a look at the documentation for more info:

https://developers.google.com/google-apps/contacts/v3/#batch_operations_for_contact_groups

Upvotes: 0

Related Questions