Импортировать контакты Google - как исключить штат / страну (Германия, США и т. Д. c) - PullRequest
0 голосов
/ 07 мая 2020

Как исключить контактную информацию из импорта (в листы)? Я хочу импортировать контакты, включая поле адреса, но без штата (США, Германия и т.д. c).

im с использованием .getAddresses ()

Результат:
Макс. Mustermann
Первая улица 1
88662 Uberlingen
DE

Мне нужен адрес без « DE »:

Макс Мустерманн

Первая улица 1

88662 Уберлинген

Привет из Германии и спасибо за помощь в Advance! Нико

Это не мой код - я редактировал его только для своих нужд:

function getContacts(groupName) {
  Utilities.sleep(200);
  
  if(groupName !== "") {
    var group  = ContactsApp.getContactGroup(groupName);
  } else {
    groupName = 'System Group: My Contacts';
  }
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var contacts = ContactsApp.getContactsByGroup(group);
  
  var allContacts = []; 
  var contactDetails = [];
  var data, numData, dataArray = [], extraArray = [];
  var contact_length = contacts.length;
  //var index = 0;
  var i = 0,batch_limit = 500;
  if(contact_length == 0)
  {
    if(groupName == '')
    {
       Browser.msgBox("Keine Kontakte in deinem Account gefunden");  
    }
    else
    {
       Browser.msgBox("Keine Kontakte in "+groupName);
    }    
    return;
  }
  else if(contact_length > 7000)
  {
    Browser.msgBox("Too many contacts.Can process upto 7000 contacts only");
    return;
  }
  for(i; i < contact_length; i++) {
    allContacts[i] = [];
    //contactDetails[0] = index++;

    contactDetails[1] = contacts[i].getPrefix();
    contactDetails[2] = contacts[i].getGivenName();
    contactDetails[3] = contacts[i].getFamilyName();
    contactDetails[0] = contacts[i].getNickname();
    
    
    //contactDetails[3] = contacts[i].getSuffix();
    
    //data = contacts[i].getEmails(); ----- original
    // data = contacts[i].getEmails(ContactsApp.Field.WORK_EMAIL); // ----- modified
    data = contacts[i].getEmails(); // ----- modified
    numData = data.length;
    for(var j = 0; j < numData; j++) {
      dataArray[j] = data[j].getAddress();
    }
    //contactDetails[3] = dataArray.toString(); ----- original
    contactDetails[6] = dataArray.join("\n");  // ----- modified
    dataArray = [];
    
    data = contacts[i].getPhones(ContactsApp.Field.MOBILE_PHONE); // ----- modified
    numData = data.length;
    for(var j = 0; j < numData; j++) {
      dataArray[j] = data[j].getPhoneNumber();
    }
    //contactDetails[4] = dataArray.toString(); ------ original
    contactDetails[7] = dataArray.join("\n");  // ----- modified
    dataArray = [];

    //data = contacts[i].getContactGroups(); // <-- This call takes anywhere between 0.03 seconds to 1.45 seconds. 
    data = contacts[i].getContactGroups();
    numData = data.length;
    for(var j = 0; j < numData; j++) {
      if(data[j].getName() == 'System Group: My Contacts')
      {
        continue;
      }
      else
      {
        dataArray[j] = data[j].getName();
        Logger.log(dataArray[i]);
      }
    }
    //contactDetails[9] = dataArray.toString(); ------ original
    contactDetails[11] = dataArray.join("\n");  // ----- modified
    dataArray = [];
    
    //data = contacts[i].getPhones(); ----- original
    data = contacts[i].getPhones(ContactsApp.Field.WORK_PHONE); // ----- modified
    numData = data.length;
    for(var j = 0; j < numData; j++) {
      dataArray[j] = data[j].getPhoneNumber();
    }
    //contactDetails[4] = dataArray.toString(); ------ original
    contactDetails[8] = dataArray.join("\n");  // ----- modified
    dataArray = [];
    
    // new section for home_phone ----- start
    data = contacts[i].getPhones(ContactsApp.Field.HOME_PHONE);
    numData = data.length;
    for(var j = 0; j < numData; j++){
      dataArray[j] = data[j].getPhoneNumber();
    }
    contactDetails[9] = dataArray.join("\n");
    dataArray = [];
    // new section for home_phone ----- end
    
    data = contacts[i].getCompanies();
    numData = data.length;
    for(var j = 0; j < numData; j++) {
      dataArray[j] = data[j].getCompanyName();
      extraArray[j] = data[j].getJobTitle();
    }
    //contactDetails[5] = dataArray.toString(); ----- original
    contactDetails[4] = dataArray.join("\n");  // ----- modified
    dataArray = [];
    //contactDetails[6] = extraArray.toString(); ------ original
    contactDetails[5] = extraArray.join("\n");  // ----- modified
    
    data = contacts[i].getAddresses();
    numData = data.length;
    for(var j = 0; j < numData; j++) {
      dataArray[j] = data[j].getAddress();
    }
    //contactDetails[7] = dataArray.join("\n"); ------ original
    contactDetails[10] = dataArray.join("\n");  // ----- modified
    dataArray = [];
    
    contactDetails[12] = contacts[i].getNotes();
    
    data = contacts[i].getCustomFields();
    numData = data.length;
    for(var j = 0; j < numData; j++) {
      dataArray[j] = data[j].getValue();
    }
    //contactDetails[7] = dataArray.join("\n"); ------ original
    contactDetails[20] = dataArray.join("\n");  // ----- modified
    dataArray = [];  
    data = [];
    
    contactDetails[14] = 'saved';
    contactDetails[15] = contacts[i].getId();

    for(var j = 0; j < 16; j++) {
      allContacts[i][j] =  contactDetails[j];
    }    
    Logger.log(i);
    printContacts(allContacts, i);
  }  

1 Ответ

0 голосов
/ 07 мая 2020

В сервисе ContactsApp вам придется использовать на своей стороне операции со строками. Поскольку адреса, возвращаемые методом getAddress(), возвращаются в виде строки, поэтому вам необходимо обработать эту строку своим кодом, чтобы удалить ненужную часть.

Другой вариант было бы использовать People API , где адрес возвращается как json, что намного лучше для того, что вы хотите.

Вы можете получить адреса всех ваших подключений с помощью сегментированных адресные поля как json, из которых вы можете выбрать поля, которые хотите построить свой объект.

Пример:

Сделайте GET запрос к:

https://people.googleapis.com/v1/{resourceName=people/*}/connections

Он вернет объект json следующего вида:

{
  "connections": [
    {
      "resourceName": "people/some-resourse-name",
      "etag": "%fakedummymmydumsrVU09",
      "addresses": [
        {
          "metadata": {
            "primary": true,
            "source": {
              "type": "CONTACT",
              "id": "30202bb55edssome-id"
            }
          },
          "formattedValue": "Travessera de Dalt\n08002\n08001 Barcelona\nBarcelona\nES",
          "type": "home",
          "formattedType": "Home",
          "poBox": "08002",
          "streetAddress": "Travessera de Dalt",
          "city": "Barcelona",
          "region": "Barcelona",
          "postalCode": "08001",
          "country": "ES",
          "countryCode": "ES"
        }
      ]
    }
  ],
  "totalPeople": 1,
  "totalItems": 1
}

Как видите, вы сможете извлеките те части адресов, которые вам нужны, и проигнорируйте остальные.

...