вторник, 28 августа 2012 г.

об автоматизации в Google Docs Spreadsheet

Только что столкнулся с нетривиальной  проблемой - мне нужно было реализовать множественный выбор формулой в документе Google Spreadsheet.

Объясняю в подробностях: есть колонка с некоторыми значениями (коды, для которых есть четкое соответствие каким-то фамилиям). Задача - в соседней колонке получить соответствующие фамилии.

В Excel это вроде как делается с помощью формул =ВЫБОР или =SELECT или чего-то в этом роде. Мне же приспичило сделать это в онлайновой таблице...



В таблице всех формул https://support.google.com/docs/bin/static.py?hl=ru&topic=25273&page=table.cs я ничего не нашёл.

Однако, роя в правильном направлении - скрипты, я наткнулся на замечательную статью из туториалов самого же Гугла - https://developers.google.com/apps-script/execution_custom_functions

Оказывается, мы можем создать скрипт, а в нем кастомную функцию, которая потом без малейших проблем будет вызыватся в виде формулы!!!

Как говорится "Эврика!"

Дальнейшее оказалось делом техники:
Инструменты - Редактор скриптов
сохраняем скрипт, авторизуем его для исполнения, и пишем что-то вроде:


function GetPartnerByPromocode(param) {
switch (param){
case 'PROMOD': return 'Человек1';break;
case 'PROMOA': return 'Человек2';break;
default: return 'Похоже ошибка!';break;
 }
}

Конечно же значения вы подставляете свои. Можно было поиграться ещё с ассоциативным массивом, но я понятия не имею есть ли они в JS и как они там работают.

После чего сохраняем, пробуем выполнить (для проверки на ошибки) и со спокойной совестью используем формулу =GetPartnerByPromoCode(text_or_cell_address) в ячейках - это работает!

Вот так! :) 

Комментариев нет:

Отправить комментарий