🌸 Bloom De Luxe

Введи PIN-код для входу

🌸 Bloom De Luxe

Налаштуйте підключення до Google Sheets

Виручка
Прибуток
Продажів
Реклама
Канали
Останні продажі
🌸

Ще немає продажів.
Додай перший!

Новий продаж

Фінанси

Ціна продажу
+ Чайові
± Доставка
− Квіти + Упакування
Прибуток

Клієнт

Додати контент-букет

Витрати

Загальна вартість

Додатково

Останні записи
📸

Ще немає контент-витрат.

Додати витрати на рекламу

Останні витрати
📣

Ще немає записів реклами.

Підключення до Google Sheets
1

Відкрий свій Google Sheets трекер

Той файл BloomDeLuxe_Tracker.xlsx який завантажив раніше — імпортуй його в Google Drive і відкрий як Google Sheets.

2

Відкрий Apps Script

В Google Sheets: Extensions → Apps Script

3

Встав скрипт

Видали весь код і встав цей (скопіюй кнопкою нижче):

function doGet(e) { try { var p = e.parameter; var ss = SpreadsheetApp.getActiveSpreadsheet(); if (p.type === 'sale') { var sheet = ss.getSheetByName('📦 Продажі'); if (!sheet.getRange(2, 18).getValue()) { sheet.getRange(2, 18).setValue('Оплата карткою (AUD)'); sheet.getRange(2, 18).setBackground('#1A1A2E'); sheet.getRange(2, 18).setFontColor('#FFFFFF'); sheet.getRange(2, 18).setFontWeight('bold'); sheet.getRange(2, 19).setValue('Оплата кешем (AUD)'); sheet.getRange(2, 19).setBackground('#1A1A2E'); sheet.getRange(2, 19).setFontColor('#FFFFFF'); sheet.getRange(2, 19).setFontWeight('bold'); sheet.getRange(2, 18, 1, 2).setHorizontalAlignment('center'); sheet.getRange(2, 18, 1, 2).setVerticalAlignment('middle'); sheet.getRange(2, 18, 1, 2).setWrap(true); sheet.setColumnWidth(18, 130); sheet.setColumnWidth(19, 130); } var nextRow = -1; for (var i = 3; i <= 102; i++) { if (!sheet.getRange(i, 3).getValue()) { nextRow = i; break; } } if (nextRow === -1) nextRow = sheet.getLastRow() + 1; sheet.getRange(nextRow, 1, 1, 19).setValues([[ nextRow - 2, p.date, p.name, p.composition, p.channel, Number(p.flowers) || 0, Number(p.packaging) || 0, Number(p.price) || 0, Number(p.delivery) || 0, Number(p.tips) || 0, Number(p.revenue) || 0, Number(p.profit) || 0, '', p.clientName || '', p.phone || '', p.email || '', p.notes || '', Number(p.paymentCard) || 0, Number(p.paymentCash) || 0 ]]); sheet.getRange(nextRow, 13).setFormula('=IFERROR(L' + nextRow + '/H' + nextRow + ',"")'); sheet.getRange(nextRow, 13).setNumberFormat('0.0%'); } if (p.type === 'ad') { var sheet = ss.getSheetByName('📣 Реклама'); var nextRow = -1; for (var i = 3; i <= 52; i++) { if (!sheet.getRange(i, 2).getValue()) { nextRow = i; break; } } if (nextRow === -1) nextRow = sheet.getLastRow() + 1; sheet.getRange(nextRow, 1, 1, 5).setValues([[ p.date || '', p.platform || '', p.adType || '', Number(p.amount) || 0, p.notes || '' ]]); } if (p.type === 'content') { var sheet = ss.getSheetByName('📸 Контент'); if (!sheet) { sheet = ss.insertSheet('📸 Контент'); var headers = [ '№', 'Дата', 'Назва букету', 'Тип контенту', 'Квіти (AUD)', 'Упакування (AUD)', 'Інші витрати (AUD)', 'Загальна вартість (AUD)', 'Статус', 'Посилання', 'Нотатки' ]; sheet.getRange(2, 1, 1, headers.length).setValues([headers]); sheet.getRange(2, 1, 1, headers.length) .setBackground('#1A1A2E') .setFontColor('#FFFFFF') .setFontWeight('bold') .setHorizontalAlignment('center') .setVerticalAlignment('middle') .setWrap(true); sheet.setFrozenRows(2); sheet.setColumnWidth(1, 55); sheet.setColumnWidth(2, 105); sheet.setColumnWidth(3, 190); sheet.setColumnWidth(4, 140); sheet.setColumnWidth(5, 115); sheet.setColumnWidth(6, 125); sheet.setColumnWidth(7, 125); sheet.setColumnWidth(8, 145); sheet.setColumnWidth(9, 130); sheet.setColumnWidth(10, 220); sheet.setColumnWidth(11, 260); } var nextRow = -1; for (var i = 3; i <= 102; i++) { if (!sheet.getRange(i, 3).getValue()) { nextRow = i; break; } } if (nextRow === -1) nextRow = sheet.getLastRow() + 1; sheet.getRange(nextRow, 1, 1, 11).setValues([[ nextRow - 2, p.date || '', p.name || '', p.contentType || '', Number(p.flowers) || 0, Number(p.packaging) || 0, Number(p.other) || 0, Number(p.total) || 0, p.status || '', p.link || '', p.notes || '' ]]); sheet.getRange(nextRow, 5, 1, 4).setNumberFormat('$0.00'); } return ContentService .createTextOutput(JSON.stringify({status:'ok'})) .setMimeType(ContentService.MimeType.JSON); } catch(err) { return ContentService .createTextOutput(JSON.stringify({status:'error', msg: err.toString()})) .setMimeType(ContentService.MimeType.JSON); } }
4

Deploy → New deployment

Натисни Deploy → New deployment
Type: Web app
Execute as: Me
Who has access: Anyone
Натисни Deploy і скопіюй URL.

5

Встав URL нижче

Шерінг для команди

1. Відкрий Google Sheets
2. Натисни Share (кнопка вгорі праворуч)
3. Додай email людини → обери Editor
4. Поділись також посиланням на цю аппу