среда, 14 ноября 2018 г.

Получаем наши контакты в таблицу google

Контакты google со всеми номерами хранятся не только у нас в телефонах. К ним можно, достаточно легко, получить доступ прямо из таблицы google, всего лишь правильно написав правильный скрипт:



function getAllContacts() { 
  var ss=SpreadsheetApp.getActiveSheet();
  var group=ContactsApp.getContactGroup('System Group: My Contacts');
  var contactsArray=group.getContacts();
  var contactsData=[];
  for (var i=0;i<contactsArray.length;i++){
    var company=contactsArray[i].getCompanies().length;
    var company1='',work='';
    if (company>0){
        company1=contactsArray[i].getCompanies()[0].getCompanyName();
        work=contactsArray[i].getCompanies()[0].getJobTitle()}
    var phones=contactsArray[i].getPhones();
    var Phone1='',Phone2='';
    if (phones[0]!=undefined){
      Phone1=phones[0].getPhoneNumber().replace('+7','7');
      Phone1=Phone1.replace(/\+/g,'').replace(/\(/g,'').replace(/\)/g,'').replace(/ /g,'').replace(/\-/g,'');
      if (Phone1.charAt(0)=='8'){Phone1=Phone1.replace('8','7')};
   }
    if (phones[1]!=undefined){
      Phone2=phones[1].getPhoneNumber().replace('+7','7');
      Phone2=Phone2.replace(/\+/g,'').replace(/\(/g,'').replace(/\)/g,'').replace(/ /g,'').replace(/\-/g,'');
      if (Phone2.charAt(0)=='8'){Phone2=Phone2.replace('8','7')};
   }
    var mails=contactsArray[i].getEmails();
    var mail1='',mail2='';
    if (mails[0]!=undefined){mail1=mails[0].getAddress()}
    if (mails[1]!=undefined){mail2=mails[1].getAddress()}
    var birth=''
    var dates=contactsArray[i].getDates();
    var realMonth=0;
    if (dates[0]){
      switch (dates[0].getMonth().toString()){
        case 'JANUARY':realMonth='01';break;
        case 'FEBRUARY':realMonth='02';break;
        case 'MARCH':realMonth='03';break;
        case 'APRIL':realMonth='04';break;
        case 'MAY':realMonth='05';break;
        case 'JUNE':realMonth='06';break;
        case 'JULY':realMonth='07';break;
        case 'AUGUST':realMonth='08';break;
        case 'SEPTEMBER':realMonth='09';break;
        case 'OCTOBER':realMonth=10;break;
        case 'NOVEMBER':realMonth=11;break;
        case 'DECEMBER':realMonth=12;break;
      }
    birth=dates[0].getDay()+'.'+realMonth+'.'+dates[0].getYear()}
    var notes=contactsArray[i].getNotes();
    contactsData.push([contactsArray[i].getId(),contactsArray[i].getFullName(),company1,work,Phone1,Phone2,mail1,mail2,notes,birth])
  }
  if (contactsData.length>0){
    ss.getRange(2, 1, contactsData.length, contactsData[0].length).setValues(contactsData).sort(2);
  }
}



Что делает скрипт? 
1. Получает контакты из списка, который отображается у Вас в телефоне. 
2. Осуществляет поиск полей:

  • ФИО 
  • Компания
  • Должность
  • Номера телефонов (только два первых). Т.к. способов записать номер телефона точно больше двух, скрипт обрабатывает Российские номера и передаёт в таблицу без знака +.
  • Адреса e-mail адресов (тоже только два первых)
  • День рождения
  • Заметки
3. Передаёт их в текущий лист таблицы, затем сортирует по ФИО. Заголовок оставляет пустым.

Уже можно использовать в качестве инструмента для создания резервной копии контактов. Так на всякий случай. Буду рад ответить на вопросы.

5 комментариев:

  1. Привет
    Я чайник - но быстро учусь - где найти информацию как начать делать скрипты:
    - автоматизация гугл таблиц и гугл документов (например есть шаблон договора, а в гугл таблице данные по клиенту и эти данные по клиенту как-то автоматизируются в гугл документы - в договор и тому прочее),
    - автоматизация гугл таблиц и календаря гугл(в таблице например создаю дату встречи -описание - место встречи и все это дело как то отображается в гугл календарь)

    ОтветитьУдалить
    Ответы
    1. Здравствуйте.
      https://zapier.com/learn/google-sheets/google-apps-script-tutorial/

      Но лучше, наверное, взять готовый скрипт и попробовать переделать его для своих целей, читая попутно официальную документацию. Так и обучение будет проходить интереснее.

      Удалить
  2. Насколько я понял этот скрипт только выгружает.
    А изменения в таблицы для выгрузки в контакты, насколько будет сложно сделать?

    ОтветитьУдалить
    Ответы
    1. Доброго дня.
      Почитав официальную документацию, не очень и сложно.

      Удалить
  3. Спасибо большое за ваш скрипт! Но если нужны адреса, группы, форма обращения и другие разделы, как их прописать? Как добавить все разделы из телефонной книги в гугл таблицы? Если кто нибудь знает, поделитесь пожалуйста скриптом или хотя бы путь для решения данного вопроса? Заранее спасибо!

    ОтветитьУдалить