Przejdź do głównej zawartości

Pisanie skryptu

Edytor skryptów to przestrzeń robocza, w której pisze się kod, testuje go na danych na żywo i konfiguruje harmonogram. Ekran jest podzielony na trzy części: po lewej — asystent AI, na środku — edytor kodu i konsola, po prawej — panel ustawień (metadane, harmonogram, stan, historia uruchomień).

ogólny widok edytora skryptów — trzy kolumny

Jak utworzyć skrypt

  1. Proszę otworzyć sekcję Skrypty i kliknąć + Utwórz script. Otworzy się edytor z szablonem kodu. nowy skrypt z szablonem kodu
  2. W panelu po prawej, w sekcji Metadane, proszę wypełnić Nazwa i Opis skryptu.
  3. W centralnym edytorze proszę napisać treść funkcji main() — dokładnie to, co skrypt ma robić (patrz sekcja SDK QubixApp poniżej).
  4. W sekcji Harmonogram proszę ustawić, jak często skrypt będzie uruchamiał się automatycznie (patrz Harmonogram). Można zostawić puste, jeśli będzie uruchamiany wyłącznie ręcznie.
  5. Proszę kliknąć przycisk Uruchom pod edytorem, aby przetestować skrypt na danych na żywo — wynik pojawi się w konsoli (patrz Testowanie skryptu).
  6. Proszę włączyć przełącznik Aktywny w prawym górnym rogu i kliknąć Zapisz.
Wskazówka

Można zapisać skrótem klawiszowym Ctrl + S (na macOS — Cmd + S) bezpośrednio z edytora, bez przenoszenia kursora na przycisk.

Asystent AI

Lewa kolumna to czat z asystentem AI. Proszę opisać zadanie zwykłymi słowami ("zatrzymaj reklamy z ROAS poniżej 0,5 i wydatkiem powyżej 20 $"), a asystent wygeneruje gotowy kod dla Qubix SDK. Przycisk Wstaw do Code pod odpowiedzią umieszcza ten kod od razu w edytorze.

Poniżej pola wprowadzania znajdują się gotowe przykładowe podpowiedzi — proszę kliknąć dowolną z nich, aby szybko zacząć.

Asystent może też wymyślić Nazwa i Opis dla skryptu na podstawie jego kodu — proszę kliknąć ikonę AI obok tych pól w sekcji Metadane.

🎬 GIF: zapytanie do asystenta AI i wstawienie kodu do edytora

SDK QubixApp

Skrypt to funkcja main(), wewnątrz której pracuje się z danymi reklam za pomocą zestawu poleceń QubixApp. Dostępne są trzy poziomy:

  • QubixApp.ads() — reklamy,
  • QubixApp.adsets() — zestawy reklam,
  • QubixApp.campaigns() — kampanie.

Każdy z nich zwraca wybór, który można filtrować i po którym można iterować. Wybór ma metody:

  • .withCondition('...') — wybierz według warunku na metrykach (na przykład 'spend_24h > 10 AND roas_24h < 0.5');
  • .orderBy('field', 'desc') — sortuj;
  • .withLimit(n) — ogranicz liczbę;
  • .get() — pobierz tablicę elementów;
  • .first() — pobierz pierwszy element.

Każda reklama, zestaw reklam lub kampania ma akcje:

  • .pause({ duration: '24h', reason: '...' }) — wstrzymaj na określony okres;
  • .activate({ reason: '...' }) — włącz ponownie;
  • .getStatsFor('24h') — pobierz metryki za okres.

Podstawowy przykład: wstrzymaj reklamy z wydatkiem powyżej 10 $ i ROAS poniżej 0,5 w ciągu ostatniej doby.

pause-low-roas.jsJavaScript
function main() {
const ads = QubixApp.ads()
.withCondition('spend_24h > 10 AND roas_24h < 0.5')
.get()

for (const ad of ads) {
console.log('pausing', ad.name, 'roas24h=', ad.roas_24h)
ad.pause({ duration: '24h', reason: 'low roas' })
}
}

Więcej gotowych fragmentów znajduje się w sekcji Przykłady skryptów.

Wskazówka

W edytorze działa autouzupełnianie: proszę zacząć wpisywać ad. lub QubixApp. — Qubix podpowie dostępne pola i metody wraz z opisami. Dzięki temu nie trzeba trzymać listy metryk w głowie.

Zapytania do bazy danych

Oprócz bieżących reklam dostępnych przez QubixApp, skrypt może odczytywać dane prosto z bazy danych Qubix za pomocą polecenia sql. Jest to zapytanie tylko do odczytu, zapisane jako tagged template:

JavaScript
const rows = sql`
SELECT country, sum(spend) AS spend
FROM hourly_insights
WHERE date >= ${'2026-06-01'}
GROUP BY country`
for (const row of rows) console.log(row.country, row.spend)

Zapytanie zwraca tablicę wierszy; każdy wiersz to obiekt, którego klucze są nazwami kolumn. Wartości przekazywane przez ${…} są wysyłane jako bezpieczne parametry — nie trzeba niczego ręcznie escape'ować, a SQL injection jest niemożliwy. Zapytania są tylko do odczytu: skrypt może odczytywać dane, ale nie może niczego zmieniać. Zakres dostępny dla zapytania jest ograniczony do danych, które wolno widzieć Pana/Pani roli.

Stan pomiędzy uruchomieniami

Skrypt może zapamiętywać wartości pomiędzy uruchomieniami poprzez ctx.state — to jego osobista pamięć:

  • ctx.state.set('key', value) — zapisz;
  • ctx.state.get('key') — odczytaj;
  • ctx.state.delete('key') — usuń.

Na przykład pozwala to zapamiętać, które reklamy zostały już przetworzone, i nie ruszać ich ponownie. Bieżąca zawartość pamięci jest widoczna w panelu po prawej w sekcji Stan — stamtąd można też ręcznie usunąć pojedynczy wpis.

Żądania do usług zewnętrznych

Polecenie ctx.fetch(url, opts) wykonuje żądanie HTTP na zewnątrz — na przykład aby wysłać powiadomienie do komunikatora lub wywołać cudze API.

Uwaga

Żądania wychodzące są dozwolone tylko do adresów z listy dozwolonych. Konfiguruje ją administrator w System → karta JavaScript. Jeśli lista jest pusta, żądania wychodzące są wyłączone. Przy próbie sięgnięcia do adresu, którego nie ma na liście, skrypt wyświetli w konsoli czytelną podpowiedź.

Harmonogram

W panelu po prawej sekcja Harmonogram ustawia, kiedy skrypt uruchamia się automatycznie. Harmonogramów może być kilka — na przykład raz na godzinę i dodatkowo o określonej porze.

  1. Proszę wpisać harmonogram w formacie cron (na przykład */5 * * * * — co 5 minut) i kliknąć +.
  2. Pod wierszem Qubix od razu pokazuje wyjaśnienie zwykłymi słowami — proszę sprawdzić, czy dobrze się Państwo zrozumieli.
  3. Aby nie przypominać sobie składni cron, proszę kliknąć ikonę AI w wierszu i opisać harmonogram słowami ("codziennie o 9 rano") — Qubix uzupełni gotowe wyrażenie.

sekcja Harmonogram z wyjaśnieniem cron

notatka

Jeśli harmonogram nie jest ustawiony, skrypt nie uruchomi się samodzielnie — tylko przez przycisk Uruchom. Aby automatyczne uruchamianie działało, przełącznik Aktywny musi być włączony.

Testowanie skryptu przyciskiem „Uruchom”

Pod edytorem kodu znajduje się konsola i przycisk ▶ Uruchom. Wykonuje on kod aktualnie znajdujący się w edytorze na danych na żywo — to bezpieczny sposób na przetestowanie logiki bez czekania na harmonogram. Wszystko, co skrypt wypisze przez console.log, pojawia się w konsoli wraz z czasem uruchomienia, statusem i czasem trwania.

konsola z wynikiem uruchomienia

Uwaga

Przycisk Uruchom wykonuje rzeczywiste działania. Jeśli kod zawiera pause() lub activate(), reklamy zostaną faktycznie wstrzymane lub włączone. Aby przetestować logikę bez konsekwencji, proszę najpierw zakomentować wiersze z działaniami i pozostawić tylko console.log.

Przycisk Uruchom staje się dostępny po pierwszym zapisaniu skryptu.

Historia uruchomień

Sekcja Uruchomienia w panelu po prawej przechowuje historię wszystkich wykonań: czas, status (sukces, błąd, timeout), czas trwania oraz liczbę wykonanych działań. Kliknięcie wiersza rozwija pełne wyjście konsoli z tego uruchomienia — przydatne do ustalenia, dlaczego skrypt zachował się niespodziewanie.

Co dalej