Коротко: интерактивный конструктор резюме на чистом HTML/CSS/JS. Можно запускать локально (как статический сайт) или развернуть как веб-приложение в Google Apps Script (облачно, с сохранением данных в PropertiesService и загрузкой аватаров в Drive).
cv_constructor.html— основной файл конструктора (frontend, standalone)index.html— адаптация для Google Apps Script (frontend, используетgoogle.script.run)code.gs— backend для Google Apps Script (сохранение, шэринг, экспорт, версии)README.md— этот файл
- Скопируйте репозиторий или файл
cv_constructor.html. - Откройте
cv_constructor.htmlв браузере двойным кликом (для простого теста).
Рекомендуется использовать статический сервер:
python3 -m http.server 8000
# затем открой http://localhost:8000/cv_constructor.htmlИли с Node:
npx http-server -c-1 . -p 8000
# затем открой http://localhost:8000/cv_constructor.htmlПримечания:
- Изменения сохраняются в
localStorageбраузера. - Чтобы перенести данные между браузерами — экспортируйте JSON или скачайте HTML.
- Рекомендуется использовать Google Chrome, Chromium или Safari
code.gsпредоставляет серверные функции: сохранение/загрузка, загрузка аватара в Drive, экспорт PDF/HTML/JSON, история версий, генерация публичных ссылок.index.htmlиспользуетgoogle.script.runдля общения с сервером.
- Откройте https://script.google.com и создайте новый проект.
- Создайте файл
Code.gsи вставьте содержимоеcode.gsиз репозитория. - Добавьте HTML-файл
indexи вставьтеindex.html. - (Опционально) добавьте
public_features_ui.jsлибо вставьте его вindex.html. - Сохраните проект.
- Разверните: Deploy → New deployment → Web app.
- Выполнять от имени: ваш аккаунт
- Доступ: по необходимости (Only me / Anyone)
- При первом запуске скрипт запросит разрешения (Drive, ScriptApp и т.д.).
Чтобы включить/отключить редактирование, установите в Script Properties DISABLE_EDITING = 1 (включено) или 0 (выключено), либо вызовите setDisableEditing(true|false) из редактора скрипта (только владелец может менять). При включённом флаге редактирование блокируется для всех, после изменения флага требуется передеплоить проект. В таком варианте использования, вы сможете делиться своим резюме по ссылке
PropertiesService.getUserProperties()хранит данные отдельно для каждого Google-аккаунта (изолированно).- Для общего хранилища используйте Google Sheets или Firestore и измените
code.gsсоответственно.
saveAllData(obj)— сохранить данные резюмеloadAllData()— вернуть все данные (объект)uploadAvatar(blob)— сохранить аватар в DriveexportToPDF()/exportToHTML()/exportToJSON()— экспортgenerateShareLink()— получить view-only ссылкуsaveVersion(name)/getVersionHistory()/restoreVersion(idx)— версии
В index.html добавьте перед </body>:
<script src="public_features_ui.js"></script>Это добавит диалоги для шеринга, экспорта, сохранения/восстановления версий.
- Ошибка OAuth / отсутствуют разрешения: откройте Project Settings → Scopes и предоставьте необходимые права.
- Аватар не загружается: проверьте квоты Drive и права доступа проекта.
- Экспорт в PDF даёт неверную верстку: подкорректируйте CSS в
buildHTMLFromData()внутриcode.gs.
- Храните пользовательские шаблоны в
templates/. - Для деплоя из CLI используйте
clasp(официальный инструмент для Apps Script).
Пример базовых команд clasp (опционально):
# Установить clasp (если ещё не установлен)
npm i -g @google/clasp
# Инициализировать проект в локальной папке
clasp create --type webapp --title "Resume Editor"
# Загружать файлы в проект
clasp push
# Получить URL развернутого веб-приложения
clasp deploymentsПо умолчанию предлагаем MIT — добавьте LICENSE в репозиторий, если согласны.