Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/427.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript Google Contact API以更详细的格式导入gmail联系人的数据?_Javascript_Import_Gmail_Format - Fatal编程技术网

如何使用javascript Google Contact API以更详细的格式导入gmail联系人的数据?

如何使用javascript Google Contact API以更详细的格式导入gmail联系人的数据?,javascript,import,gmail,format,Javascript,Import,Gmail,Format,我正在使用此页面中的代码获取gmail联系人列表。实际上,它可以正常工作,但我会像一个简单的字符串一样获取名称、地址等数据,并使用“\n”作为分隔符,例如: <script type="text/javascript"> var contactsService; var scope = 'https://www.google.com/m8/feeds'; function setupContactsService() { //contactsSe

我正在使用此页面中的代码获取gmail联系人列表。实际上,它可以正常工作,但我会像一个简单的字符串一样获取名称、地址等数据,并使用“\n”作为分隔符,例如:

<script type="text/javascript">
    var contactsService;
    var scope = 'https://www.google.com/m8/feeds';

    function setupContactsService() {
      //contactsService = new google.gdata.contacts.ContactsService('exampleCo-exampleApp-1.0');
      contactsService = new google.gdata.contacts.ContactsService('GoogleInc-jsguide-1.0');
    }

    function getMyContacts() {
      var contactsFeedUri = 'https://www.google.com/m8/feeds/contacts/default/full'; //?max-results=9999&alt=json&v=3.0
      var query = new google.gdata.contacts.ContactQuery(contactsFeedUri);

      setupContactsService();

      contactsService.getContactFeed(query, handleContactsFeed, handleError);

    }

    var handleContactsFeed = function(result) {
      var entries = result.feed.entry;

      for (var i = 0; i < entries.length; i++) {
        var entry = entries[i];
        var addrs  = entry.getPostalAddresses();
        var name   = entry.getTitle();

        // logging
        console.log(addrs[0]);
        console.log(name);

      }
    }

    function handleError(e) {
      alert(e.cause ? e.cause.statusText : e.message);
    }
</script>

提前谢谢

似乎我找到了答案,为了获得更详细和格式化的信息,需要为contactsFeedUri添加额外的参数,用于google.gdata.contacts.ContactQuery

该附加参数为:?v=3.0 因此,在我的例子中,函数将如下所示:

function getMyContacts() {
      var contactsFeedUri = 'https://www.google.com/m8/feeds/contacts/default/full?v=3.0&alt=json';
      var query = new google.gdata.contacts.ContactQuery(contactsFeedUri);

      setupContactsService();

      contactsService.getContactFeed(query, handleContactsFeed, handleError);

    }
为了获得必要的数据,我创建了一个简单的obj,它可能对某些人有用:

function contactEntry(entry) {
        this.entry = entry;
        this.testEntry = function() {
            alert( 'test entry' )
        };
        this.getFirstName = function() {
            if ((entry.gd$name == null) || (entry.gd$name.gd$givenName == null) || (entry.gd$name.gd$givenName.$t == null)) {
                return '';
            } else {
                return entry.gd$name.gd$givenName.$t;
            }
        };
        this.getLastName = function() {
            if ((entry.gd$name == null) || (entry.gd$name.gd$familyName == null) || (entry.gd$name.gd$familyName.$t == null)) {
                return '';
            } else {
                return entry.gd$name.gd$familyName.$t;
            }
        };
        this.getAdditionalName = function() {
            if ((entry.gd$name == null) || (entry.gd$name.gd$AdditionalName == null) || (entry.gd$name.gd$AdditionalName.$t == null)) {
                return '';
            } else {
                return entry.gd$name.gd$familyName.$t;
            }
        };
        this.getEmail = function() {
            if ((entry.gd$email == null) || (entry.gd$email.length == 0) || (entry.gd$email[0].address == null)) {
                return '';
            } else {
                return entry.gd$email[0].address;
            }
        };
        this.getStreet = function() {
            if (!this._addrExists() || (entry.gd$structuredPostalAddress[0].gd$street == null)) {
                return '';
            } else {
                return entry.gd$structuredPostalAddress[0].gd$street.$t;
            }
        };
        this.getCity = function() {
            if (!this._addrExists() || (entry.gd$structuredPostalAddress[0].gd$city == null)) {
                return '';
            } else {
                return entry.gd$structuredPostalAddress[0].gd$city.$t;
            }
        };
        this.getCountry = function() {
            if (!this._addrExists() || (entry.gd$structuredPostalAddress[0].gd$country == null)) {
                return '';
            } else {
                return entry.gd$structuredPostalAddress[0].gd$country.$t;
            }
        };
        this.getPostcode = function() {
            if (!this._addrExists() || (entry.gd$structuredPostalAddress[0].gd$postcode == null)) {
                return '';
            } else {
                return entry.gd$structuredPostalAddress[0].gd$postcode.$t;
            }
        };
        this.getPhone = function() {
            if ((entry.gd$phoneNumber == null) || (entry.gd$phoneNumber.length == 0) || (entry.gd$phoneNumber[0].$t == null)) {
                return '';
            } else {
                return entry.gd$phoneNumber[0].$t
            }
        };
        this.getOrganization = function() {
            if ((entry.gd$organization == null) || (entry.gd$organization.length == 0) || (entry.gd$organization[0].getOrgName() == null)) {
                return '';
            } else {
                return entry.gd$organization[0].getOrgName().getValue();
            }
        };
        this.getBirthday = function() {
            if ((entry.gContact$birthday == null) || (entry.gContact$birthday.when == null)) {
                return '';
            } else {
                return entry.gContact$birthday.when;
            }
        };
        this.getEvent = function() {
            if ((entry.gContact$event == null) || (entry.gContact$event.length == 0) || (entry.gContact$event[0].gd$when == null)) {
                return '';
            } else {
                return entry.gContact$event[0].gd$when.startTime;
            }
        };
        // protected methods
        this._addrExists = function() {
            if ((entry.gd$structuredPostalAddress == null) || (entry.gd$structuredPostalAddress.length == 0)) {
                return false;
            }

            return true;
        };
    } 
它可以这样使用:

var handleContactsFeed = function(result) {

      var entries = result.feed.entry;

      var contact = new contactEntry(entries[0]);

                var address = {};
        address['fname']   = contact.getFirstName();
        address['lname']   = contact.getLastName() + (contact.getAdditionalName() != '' ? ' ' + contact.getAdditionalName() : '');
        address['address'] = contact.getStreet();
        address['city']    = contact.getCity();
        address['country'] = contact.getCountry();
        address['zip']     = contact.getPostcode();
        address['phone']   = contact.getPhone();
        address['mail']    = contact.getEmail();
        address['organization'] = contact.getOrganization();
        address['birthday'] = contact.getBirthday();
        address['event']   = contact.getEvent();
    }

不幸的是,这个示例缺少很多实现位。
var handleContactsFeed = function(result) {

      var entries = result.feed.entry;

      var contact = new contactEntry(entries[0]);

                var address = {};
        address['fname']   = contact.getFirstName();
        address['lname']   = contact.getLastName() + (contact.getAdditionalName() != '' ? ' ' + contact.getAdditionalName() : '');
        address['address'] = contact.getStreet();
        address['city']    = contact.getCity();
        address['country'] = contact.getCountry();
        address['zip']     = contact.getPostcode();
        address['phone']   = contact.getPhone();
        address['mail']    = contact.getEmail();
        address['organization'] = contact.getOrganization();
        address['birthday'] = contact.getBirthday();
        address['event']   = contact.getEvent();
    }