Я хочу импортировать контакты серверным скриптом из разных источников в определенный ящик.
С помощью google api удалось создать некий ключ доступа, создавать контакты, получать список, но их не видно непосредственно через web интерфейс gmail
#!/usr/bin/python
# -*- coding: utf-8
import httplib2
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client import tools
import json
from apiclient.discovery import build
import gdata.data
import gdata.gauth
import gdata.contacts.client
import gdata.contacts.data
import httplib2
from oauth2client.service_account import ServiceAccountCredentials
credentials = ServiceAccountCredentials.from_json_keyfile_name('key.json', scopes='https://www.google.com/m8/feeds/')
# http://stackoverflow.com/questions/16026286/using-oauth2-with-service-account-on-gdata-in-python
gd_client = gdata.contacts.client.ContactsClient(source='My Project')
auth2token = gdata.gauth.OAuth2TokenFromCredentials(credentials)
gd_client = auth2token.authorize(gd_client)
def CreateContact(gd_client, phone):
new_contact = gdata.contacts.data.ContactEntry(
name=gdata.data.Name(full_name=gdata.data.FullName(text='test'))
)
new_contact.phone_number.append(gdata.data.PhoneNumber(text=phone, rel=gdata.data.WORK_REL, primary='true'))
contact_entry = gd_client.CreateContact(new_contact)
print "Contact's ID: %s" % contact_entry.id.text
CreateContact(gd_client, '9999')
def PrintAllContacts(gd_client):
feed = gd_client.GetContacts()
#print feed.entry.phone
for i, entry in enumerate(feed.entry):
print '\n%s %s' % (i+1, entry.name)
if entry.content:
print ' %s' % (entry.content.text)
# Display the primary email address for the contact.
for email in entry.email:
if email.primary and email.primary == 'true':
print ' %s' % (email.address)
for phone_number in entry.phone_number:
if phone_number.primary and phone_number.primary == 'true':
print ' %s' % (phone_number.text)
# Show the contact groups that this contact is a member of.
for group in entry.group_membership_info:
print ' Member of group: %s' % (group.href)
# Display extended properties.
for extended_property in entry.extended_property:
if extended_property.value:
value = extended_property.value
else:
value = extended_property.GetXmlBlob()
print ' Extended Property - %s: %s' % (extended_property.name, value)
print PrintAllContacts(gd_client)