Sistema e automazione
g.workers.* — Processi di lavoro delle code
Sezione intitolata “g.workers.* — Processi di lavoro delle code”Gestisce pool di processi di lavoro concorrenti per elaborazione in blocco. Vedi Processi di lavoro delle code per i dettagli completi.
| Metodo | Firma | Async | Descrizione |
|---|---|---|---|
start | (options) | No | Avvia pool di processi di lavoro |
stop | (queueName?) | No | Ferma processi di lavoro (tutti o per coda) |
pause | () | No | Mette in pausa tutte le operazioni di estrazione |
resume | () | No | Riprende le operazioni di estrazione |
status | () → WorkerPoolStatus[] | No | Ottiene lo stato di tutti i pool |
WorkerStartOptions:
{ clearTabs?: boolean layout?: "horizontal" | "vertical" | "quad" workers: WorkerPoolOptions[]}WorkerPoolOptions:
{ queue: string script: string concurrency?: number throttle?: { requestsPerMinute?: number } dequeue?: string requiresWorkflowEnvelope?: boolean}Imposta requiresWorkflowEnvelope: true per code appartenenti a un flusso di lavoro che devono elaborare solo elementi collegati ai metadati di esecuzione/elemento del registro di tracciabilità dei flussi di lavoro.
g.worker.* — Contesto processo di lavoro
Sezione intitolata “g.worker.* — Contesto processo di lavoro”Disponibile solo dentro script dei processi di lavoro.
| Metodo | Firma | Async | Descrizione |
|---|---|---|---|
getContext | () → WorkerContext | No | Ottiene l’elemento corrente, l’ID scheda e il nome della coda |
WorkerContext:
{ item: QueueItem tabId: string queueName: string}g.network.* — Traffico di rete
Sezione intitolata “g.network.* — Traffico di rete”Accede al traffico HTTP catturato. La cattura deve essere abilitata (lo è per impostazione predefinita).
| Metodo | Firma | Async | Descrizione |
|---|---|---|---|
search | (query?, options?) → TrafficEntryInfo[] | No | Cerca nel traffico catturato |
getById | (id) → TrafficEntryInfo | null | No | Ottiene una voce di traffico specifica |
getResponseBody | (id) → string | null | No | Ottiene il contenuto della risposta |
getRequestBody | (id) → string | null | No | Ottiene il contenuto della richiesta |
count | () → number | No | Conta le voci catturate |
clear | () | No | Cancella tutto il traffico catturato |
enable | () | No | Abilita la cattura del traffico |
disable | () | No | Disabilita la cattura del traffico |
isEnabled | () → boolean | No | Controlla se la cattura è abilitata |
waitForRequest | (urlPattern, options?) → Promise<TrafficEntryInfo> | Sì | Attende una richiesta corrispondente |
NetworkSearchOptions:
{ method?: string // "GET", "POST", ecc. statusMin?: number statusMax?: number contentType?: string tabId?: string limit?: number // predefinito: 100 offset?: number // predefinito: 0 sort?: string // timestamp, url, status, size, duration, method order?: string // "asc" o "desc" (predefinito)}WaitForRequestOptions:
{ method?: string timeout?: number // predefinito: 30000ms}Esempio
Sezione intitolata “Esempio”async function main() { await g.nav.navigateToUrl("https://api.example.com/data");
// Attendi la risposta API const entry = await g.network.waitForRequest("api.example.com/data"); const body = g.network.getResponseBody(entry.id); const data = JSON.parse(body); g.log("Ricevuti " + data.items.length + " elementi");}g.history.* — Cronologia di navigazione
Sezione intitolata “g.history.* — Cronologia di navigazione”| Metodo | Firma | Async | Descrizione |
|---|---|---|---|
search | (query?, options?) → NavigationEntryInfo[] | No | Cerca nella cronologia di navigazione |
count | () → number | No | Conta le voci di cronologia |
clear | () | No | Cancella tutta la cronologia |
HistorySearchOptions:
{ tabId?: string limit?: number // predefinito: 100 offset?: number // predefinito: 0 sort?: string // "timestamp" (predefinito), "url", "status" order?: string // "asc" o "desc" (predefinito)}g.robots.* — Conformità robots.txt
Sezione intitolata “g.robots.* — Conformità robots.txt”Controllo automatico robots.txt per automazione scriptata. Abilitato per impostazione predefinita.
| Metodo | Firma | Async | Descrizione |
|---|---|---|---|
isAllowed | (url) → Promise<boolean> | Sì | Controlla se un URL è consentito da robots.txt |
getCrawlDelay | (url) → Promise<number | null> | Sì | Ottiene il crawl-delay per un dominio |
disable | () | No | Disabilita il controllo robots.txt per questo script |
enable | () | No | Riabilita il controllo robots.txt |
g.workflows.* — Flussi di lavoro
Sezione intitolata “g.workflows.* — Flussi di lavoro”Ispeziona e cambia flussi di lavoro dentro uno spazio di lavoro.
| Metodo | Firma | Async | Descrizione |
|---|---|---|---|
getActive | () → WorkflowInfo | null | No | Ottiene nome e percorso del flusso di lavoro attivo |
list | () → WorkflowListItem[] | No | Elenca tutti i flussi di lavoro nello spazio di lavoro |
switch | (name) | No | Cambia flusso di lavoro (fire-and-forget, avviene sul thread UI) |
WorkflowInfo:
{ name: string // nome del flusso di lavoro path: string // percorso assoluto della cartella del flusso di lavoro}WorkflowListItem:
{ name: string enabled: boolean hasEvents: boolean // ha trigger events.json hasWorkers: boolean // ha configurazione workers.json hasTools: boolean // ha cartella tools/ hasViews: boolean // ha cartella views/ scriptCount: number // numero di file script}g.trigger.* — Contesto di generazione di evento
Sezione intitolata “g.trigger.* — Contesto di generazione di evento”Disponibile dentro script eseguiti da generazione di eventi. Restituisce metadati sul motivo dell’invocazione dello script.
| Metodo | Firma | Async | Descrizione |
|---|---|---|---|
getContext | () → TriggerContext | No | Ottiene i dati dell’evento per l’esecuzione corrente del generatore di eventi |
TriggerContext:
{ event: string // "url-match", "page-loaded", "tab-created", "tab-closed", // "tab-activated", "external-queue", "dom-mutation" tabId?: string // scheda del browser associata all'evento url?: string // URL della pagina al momento dell'evento timestamp: string // ISO 8601 pattern?: string // pattern URL corrispondente (solo url-match)
// campi dom-mutation: oldValue?: string // valore precedente newValue?: string // nuovo valore attribute?: string // nome dell'attributo cambiato (null per cambiamenti testo) mutationType?: string // "characterData", "attributes" o "childList" selector?: string // selettore CSS corrispondente changes?: object[] // array di mutazioni (solo strategia buffer)}Esempio
Sezione intitolata “Esempio”async function main() { const ctx = g.trigger.getContext();
if (ctx.event === "url-match") { g.log("Corrispondenza " + ctx.pattern + " su " + ctx.url); }
if (ctx.event === "dom-mutation") { g.log(ctx.selector + " cambiato: " + ctx.oldValue + " → " + ctx.newValue); }}