Перенос контактов в таблицы с помощью Google Apps Script
Что делает скрипт?
1. Получает контакты из списка, который отображается у Вас в телефоне.
2. Осуществляет поиск полей:
- ФИО
- Компания
- Должность
- Номера телефонов (только два первых). Т.к. способов записать номер телефона точно больше двух, скрипт обрабатывает Российские номера и передаёт в таблицу без знака +.
- Адреса e-mail адресов (тоже только два первых)
- День рождения
- Заметки
3. Передаёт их в текущий лист таблицы, затем сортирует по ФИО.
Изначально скрипт взят с сайта https://ignatov-script.blogspot.com/2018/11/google.html
и имеет недоработки, для чего он был доработан и улучшен для более комфортной работы с базой контактов.
function getAllContacts() {
var ss = SpreadsheetApp.getActiveSheet();
var group = ContactsApp.getContactGroup(‘System Group: My Contacts’);
var contactsArray = group.getContacts();
var contactsData = [];
// Заголовки столбцов
var headers = [[‘Full Name’, ‘Company’, ‘Job Title’, ‘Phone 1’, ‘Phone 2’, ‘Email 1’, ‘Email 2’, ‘Notes’, ‘Birthday’]];
contactsData.push.apply(contactsData, headers);
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].getFullName(), company1, work, Phone1, Phone2, mail1, mail2, notes, birth]);
}
if (contactsData.length > 0) {
// Запись данных в таблицу
ss.clear(); // Очистка содержимого перед обновлением
ss.getRange(1, 1, contactsData.length, contactsData[0].length).setValues(contactsData);
// Применение стилей к заголовкам столбцов
var headerRange = ss.getRange(1, 1, 1, contactsData[0].length);
headerRange.setFontWeight(‘bold’);
headerRange.setBorder(true, true, true, true, true, true);
}
}
// Функция для запуска скрипта каждую неделю
function scheduleGetAllContacts() {
var triggerDay = 1; // День недели для запуска (1 – Понедельник, 2 – Вторник и т.д.)
var now = new Date();
var dayOfWeek = now.getDay();
var daysUntilTrigger = triggerDay – dayOfWeek;
if (daysUntilTrigger <= 0) {
daysUntilTrigger += 7; // Если уже прошел день запуска на текущей неделе, то следующий запуск будет в следующий понедельник
}
var triggerDate = new Date(now.getFullYear(), now.getMonth(), now.getDate() + daysUntilTrigger, 0, 0, 0);
ScriptApp.newTrigger(‘getAllContacts’)
.timeBased()
.at(triggerDate)
.create();
}
function onOpen(){
// функция добавляет меню и добавляет подменю
let rakendus=SpreadsheetApp.getActiveSpreadsheet();
let menuItems=[
{name: ‘Обновить контакты’, functionName: ‘getAllContacts’}
];
rakendus.addMenu(‘VitaliiSokhan’, menuItems);
}
