Google Sheets не умеет переводить числа в русский текст. Стандартных формул для этого нет. Но есть Apps Script — встроенный инструмент для написания скриптов прямо в таблице. С его помощью можно добавить свою функцию =PROPNUM() и использовать её как обычную формулу.
Ниже — пошаговая инструкция с готовым кодом.
Способ 1: Пользовательская функция через Apps Script
Шаг 1. Откройте редактор скриптов
В Google Таблицах: меню Расширения → Apps Script.
Откроется редактор кода. Удалите стандартный пустой код function myFunction() {}.
Шаг 2. Вставьте код
function PROPNUM(summa) {
if (typeof summa !== 'number') return 'Ошибка: введите число';
var rubles = Math.floor(summa);
var kopecks = Math.round((summa - rubles) * 100);
return numberToText(rubles) + ' рублей ' +
(kopecks < 10 ? '0' : '') + kopecks + ' копеек';
}
function numberToText(n) {
if (n === 0) return 'Ноль';
var billions = Math.floor(n / 1000000000);
var millions = Math.floor((n % 1000000000) / 1000000);
var thousands = Math.floor((n % 1000000) / 1000);
var units = n % 1000;
var result = '';
if (billions > 0) result += groupToText(billions, 'm') + ' миллиард' + billionSuffix(billions) + ' ';
if (millions > 0) result += groupToText(millions, 'm') + ' миллион' + millionSuffix(millions) + ' ';
if (thousands > 0) result += groupToText(thousands, 'f') + ' тысяч' + thousandSuffix(thousands) + ' ';
if (units > 0) result += groupToText(units, 'm');
result = result.trim();
return result.charAt(0).toUpperCase() + result.slice(1);
}
function groupToText(n, gender) {
var hundreds = ['', 'сто', 'двести', 'триста', 'четыреста',
'пятьсот', 'шестьсот', 'семьсот', 'восемьсот', 'девятьсот'];
var tens = ['', 'десять', 'двадцать', 'тридцать', 'сорок', 'пятьдесят',
'шестьдесят', 'семьдесят', 'восемьдесят', 'девяносто'];
var teens = ['', 'одиннадцать', 'двенадцать', 'тринадцать', 'четырнадцать',
'пятнадцать', 'шестнадцать', 'семнадцать', 'восемнадцать', 'девятнадцать'];
var unitsM = ['', 'один', 'два', 'три', 'четыре', 'пять',
'шесть', 'семь', 'восемь', 'девять'];
var unitsF = ['', 'одна', 'две', 'три', 'четыре', 'пять',
'шесть', 'семь', 'восемь', 'девять'];
var h = Math.floor(n / 100);
var t = Math.floor((n % 100) / 10);
var u = n % 10;
var parts = [];
if (h > 0) parts.push(hundreds[h]);
if (t === 1 && u > 0) {
parts.push(teens[u]);
} else {
if (t > 0) parts.push(tens[t]);
if (u > 0) parts.push(gender === 'f' ? unitsF[u] : unitsM[u]);
}
return parts.join(' ');
}
function billionSuffix(n) {
var u = n % 100;
if (u >= 11 && u <= 19) return 'ов';
switch (n % 10) {
case 1: return '';
case 2: case 3: case 4: return 'а';
default: return 'ов';
}
}
function millionSuffix(n) {
var u = n % 100;
if (u >= 11 && u <= 19) return 'ов';
switch (n % 10) {
case 1: return '';
case 2: case 3: case 4: return 'а';
default: return 'ов';
}
}
function thousandSuffix(n) {
var u = n % 100;
if (u >= 11 && u <= 19) return '';
switch (n % 10) {
case 1: return 'а';
case 2: case 3: case 4: return 'и';
default: return '';
}
}
Шаг 3. Сохраните
Нажмите Ctrl+S (или кнопку «Сохранить проект» в редакторе). Дайте проекту имя — например, «Прописью».
Шаг 4. Используйте в таблице
Вернитесь в таблицу. В любой ячейке введите:
=PROPNUM(A1)
Результат: «Двадцать пять тысяч рублей 00 копеек».
При первом использовании Google попросит разрешить скрипту доступ к таблице — нажмите «Разрешить».
Способ 2: запрос к API PropNum
Если не хотите держать весь алгоритм склонения в таблице, оставьте ту же функцию PROPNUM, но её тело пусть обращается к API PropNum — логика склонения всегда актуальна на стороне сервиса. Используйте либо этот вариант, либо локальный из Способа 1 — не оба сразу. API отдаёт JSON, поэтому IMPORTDATA здесь не подойдёт (она ждёт CSV) — нужен UrlFetchApp:
function PROPNUM(summa) {
if (typeof summa !== 'number') return 'Ошибка: введите число';
var url = 'https://propnum.ru/api/convert/num?amount=' + summa;
var response = UrlFetchApp.fetch(url);
var data = JSON.parse(response.getContentText());
return data.result.full;
}
Вызов тот же — =PROPNUM(A1), но склонение считается на сервере. Для родительного падежа (шапка договора) сделайте по аналогии функцию PROPNUM_GEN с параметром &case=gen.
Ограничение: функция обращается к сети при каждом пересчёте, поэтому для больших таблиц удобнее локальный скрипт (Способ 1) — он работает мгновенно и без интернета. Учитывайте лимит API: 10 запросов в минуту с одного IP.
Важно: скрипт сохраняется в таблице
Когда вы добавляете скрипт через Apps Script, он привязан к конкретному файлу Google Таблиц. Если поделиться таблицей с коллегой — функция =PROPNUM() будет работать у него тоже, скрипт передаётся вместе с файлом.
Если нужна функция во всех новых таблицах, создайте шаблонный файл с уже подключённым скриптом.
Подробная инструкция по интеграции
Пошаговое руководство по подключению PropNum к Google Таблицам — с примерами запросов и частыми ошибками — собрано на отдельной странице.
→ Интеграция с Google Таблицами
Сравнение двух способов
| Локальный скрипт | Функция через API | |
|---|---|---|
| Работает без интернета | Да | Нет |
| Скорость пересчёта | Мгновенно | С задержкой на сетевой запрос |
| Актуальность алгоритма | Нужно обновлять вручную | Всегда актуальна на сервере |
| Сложность настройки | Средняя | Низкая |
| Лимиты | Нет | 10 запросов/мин на IP |