Как извлечь URL-адрес контакта из contacts.google.com - PullRequest
0 голосов
/ 04 ноября 2018

Следующий скрипт помогает мне получить имя и URL каждого контакта в моем https://contacts.google.com.

function extract_contacts() {
  var s = '';
  var contacts = ContactsApp.getContacts();
    for (var i in contacts) {
      var name = contacts[i].getFullName();
      var id = contacts[i].getId();
      var url = contacts[i].getUrls();
      s+=name+" ·· "+url+"\r";
    }
  Logger.log(s);
}

Проблема в том, что getUrls отображает в результате UrlField вместо фактического URL, сохраненного в этом поле, что-то вроде этого:

friend ·· UrlField
another_friend ·· UrlField,UrlField

Что я должен использовать вместо getUrls? Мне также нужно получить ярлык (или группу) каждого контакта. Пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

OK. После помощи JSmith и добавления некоторых замен и алфавитной сортировки вот оно. В конце сценарий выводит результат на страницу Сайтов Google:

function extractContacts() {
  var s = '';
  var contacts = ContactsApp.getContacts();
    for (var i in contacts) {

      var adresses = "";
      var groups = "";
      var name = contacts[i].getFullName();
      var id = contacts[i].getId();

      var urlFields = contacts[i].getUrls();
      for (var j = 0; j < urlFields.length; j++)
        adresses += '* <a href="'+urlFields[j].getAddress()+'" target="_blank">'+urlFields[j].getAddress()+'</a><br>';

      var group = contacts[i].getContactGroups();
      for (var k = 0; k < group.length; k++)
        groups += group[k].getName() + " · ";

      if(adresses==''){var groups=''; var name='';}
      s+='<h3>'+groups+' · '+name+'</h3><blockquote>'+adresses+"</blockquote>#####";
    }

var s = s.replace(/System Group: My Contacts · /g,"");
var s = s.replace(/,/g,"&&&&&");

var aorder = s.split("#####").sort(function (a, b) {
  return a.localeCompare(b);
});
var s = aorder.toString();
var s = s.replace(/,/g,'<br>');
var s = s.replace(/&&&&&/g,',');
var s = s.replace(/·  ·/g,':');
var s = s.replace(/<br><h3> · <\/h3>/g,'');

var site = SitesApp.getSite('site','clicamiento');
var home = site.getChildByName('/home');
home.setHtmlContent('<h1>CLICAMIENTO</h1>'+s);

}
0 голосов
/ 04 ноября 2018

Я предлагаю вам разобрать массив URLField и захватить адрес следующим образом:

function extract_contacts() {
  var s = '';
  var contacts = ContactsApp.getContacts();
    for (var i in contacts) {
      var adresses ="";
      var name = contacts[i].getFullName();
      var id = contacts[i].getId();
      var urlFields = contacts[i].getUrls();
      for (var j = 0; j < urlFields.length; j++)
        adresses += urlFields[j].getAddress() + " ";
      s+=name+" ·· "+ adresses +"\r";
    }
  Logger.log(s);
}

то же самое для групп используйте getContactGroups() и анализируйте массив, затем используйте getName() или getId().

ЛИТЕРАТУРА

Класс URLField

ContactGroup Class

...