Курсы валют в ТаблицеРазработка и доработка

Скрипт Google Apps Script, который загрузит нужные курсы валют в вашу Google Таблицу из выбранного вами источника

Обычно готово за 15 минутДоработки включеныКонтроль качества
Пакеты
Защита оплатыПодробнее
  • Доработки в рамках пакета бесплатны.
  • Если вы не ответите в течение 3 дней после сдачи, работа будет принята автоматически.

При оплате деньги резервируются и переходят сервису, только когда вы примете работу.

Скрипт Google Apps Script, который загрузит нужные курсы валют в вашу Google Таблицу из выбранного вами источника

Пример результата

Пример по пакету «Стандарт»

Сводный отчёт в Excel из ежемесячных продаж 9 магазинов

Как его запускают

python merge_sales.py --month 2026-10
2026-11-02 09:14:03 INFO  Папка: sales/2026-10, найдено файлов: 9
2026-11-02 09:14:03 INFO  shop-01.csv: 1284 строки
2026-11-02 09:14:04 INFO  shop-02.xlsx: 967 строк
2026-11-02 09:14:04 WARN  shop-07.csv: пропущены 3 строки без цены (строки 88, 412, 913)
2026-11-02 09:14:05 INFO  Готово: 10 412 строк -> report-2026-10.xlsx (листы «Продажи» и «Итоги»)

Настройки, а не код

Названия столбцов каждого магазина лежат в settings.ini. Новый магазин или переименованный столбец — это одна строка там:

[columns]
date = Дата, Дата продажи, День
product = Товар, Наименование, Название
quantity = Кол-во, Количество, Шт
price = Цена, Цена за шт

Фрагмент кода

def read_shop_file(path: Path, columns: dict[str, list[str]]) -> pd.DataFrame:
    """Читает файл одного магазина и даёт столбцам названия из отчёта."""
    table = pd.read_excel(path) if path.suffix == ".xlsx" else pd.read_csv(path, encoding="utf-8-sig")
    renamed = {}
    for name, variants in columns.items():
        found = next((c for c in table.columns if c.strip() in variants), None)
        if found is None:
            raise ReportError(f"{path.name}: нет столбца «{name}» (искали: {', '.join(variants)})")
        renamed[found] = name
    table = table.rename(columns=renamed)[list(columns)]
    table["shop"] = path.stem
    return table

Файлы: ZIP-архив с merge_sales.py (310 строк), settings.ini, requirements.txt и README: как установить Python, как запустить скрипт и что значит каждое сообщение в журнале. Клиент запускает скрипт на своём компьютере.

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

Клиент и все данные вымышлены.

Об услуге

Если цены, счета или отчёты зависят от курса валют, вписывать его каждое утро легко забыть. Этот скрипт Google Apps Script берёт курсы из открытого источника, который выберете вы, например курсы, которые публикует ваш центробанк, или сервис курсов, где вы получите свой ключ, и записывает нужные валюты в вашу Google Таблицу с датой. Начиная со «Стандарта» он ведёт лист истории со строкой на каждый день, чтобы формулы могли найти курс на любую дату, а в «Премиуме» есть запасной источник на случай, если первый не ответил, и заполнение прошлых дат. В Google Таблицах есть своя функция GOOGLEFINANCE для части валют; этот скрипт нужен, когда важен определённый источник или сохранённая история. Курсы принадлежат источнику; финансовых советов мы не даём.

Что входит

  • Что вы получитеАрхив ZIP с кодом Apps Script и README, где показано, как подключить его к таблице, дать доступ и запускать ежедневно; код также виден на странице заказа.
  • Ваш источникОфициальные или сервисные курсы, которые выбрали вы
  • Ваши валютыТолько нужные, к вашей базовой валюте
  • История по датамНачиная со «Стандарта», строка на каждый день для поиска
  • Ключ не в кодеЕсли источнику нужен ключ, вы вписываете его сами
  • Понятный кодС комментариями, валюту легко добавить потом

Порядок работы

  1. 1
    ИсточникВы называете валюты и источник, которому доверяете
  2. 2
    КодМы пишем скрипт по документации источника и инструкцию по установке
  3. 3
    ПроверкаВы запускаете его в копии таблицы и сверяете с сайтом источника
  4. 4
    ПравкиВы просите правки в рамках пакета и присылаете текст ошибки, если она есть

Что нужно от вас

Нужные валюты и ваша базовая валюта, источник, которым вы хотите пользоваться (ссылка на страницу или документацию, где он публикует курсы, или мы предложим открытые варианты на выбор), как часто и к какому времени нужны курсы и куда их ставить в таблице. Если нужны прошлые даты («Премиум»), с какой даты. Если источник просит ключ, создайте его в своём аккаунте и никогда не присылайте нам.

В брифе мы спросим:

  • Какие валюты нужны?
  • Какой источник использовать?
  • Как часто и к какому времени?
  • Нужны ли прошлые даты?

Сравнение пакетов

ПакетыЭкономКурсы на сегодня16 $СтандартКурсы с историей33 $БизнесПрограмма для курсов67 $
Срок1 день2 дня3 дня
Доработки123
Коддо 150 строкдо 400 строкдо 1000 строк
Файлов кода1до 3до 8
Файл настроекНетДаДа
Понятные ошибки и журнал работыНетДаДа
Параметры запуска и инструкция для запуска по расписаниюНетНетДа
Инструкция по установке и запуску (README)ДаДаДа
ЯзыкGoogle Apps ScriptGoogle Apps ScriptGoogle Apps Script
Заказать ЭкономЗаказать СтандартЗаказать Бизнес

Защита оплаты

Вы оплачиваете заказ сразу, но деньги переходят сервису только за принятую работу.

  • Фиксированная ценаЦена пакета не меняется после оплаты.
  • Деньги резервируютсяПри оплате сумма только резервируется. Сервису она переходит, когда вы примете работу.
  • Проверка перед сдачейКаждый результат проходит проверку качества, прежде чем попасть к вам, и вы видите его на странице заказа до приёмки.
  • Бесплатные доработкиПросите изменения в рамках брифа столько раз, сколько предусмотрено пакетом.
  • Приёмка через 3 дняЕсли в течение 3 дней после сдачи вы не примете работу и не попросите изменений, она будет принята автоматически. Если после сдачи вы напишете в чат заказа, заказ подождёт; ответив, мы можем начать отсчёт 3 дней заново и сообщим об этом в чате.
  • Переделка или полный возвратЕсли результат не соответствует брифу и доработки не помогли или срок превышен больше чем вдвое, напишите в чат заказа: мы переделаем работу или полностью вернём деньги.
Как это работает →

Вопросы и ответы

Курсы точные?

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

Он может обновляться каждую минуту для торговли?

Он рассчитан на курсы раз в день или в час для цен, счетов и отчётов, а не для торговли. Финансовых советов мы не даём.

Что в выходные и праздники?

Многие официальные источники в эти дни ничего не публикуют. Начиная со «Стандарта» вы выбираете, повторять ли в истории последний курс или оставлять день пустым.

Вы получите доступ к моей таблице?

Нет. Скрипт вы подключаете к своей таблице и сами даёте ему доступ. В ваш аккаунт Google мы не заходим.

Не нашли ответ?

Пакеты