Ir al contenido

Sistema y automatización

## g.workers.* — procesos de trabajo de cola

Sección titulada «## g.workers.* — procesos de trabajo de cola»

Gestiona pools de procesos concurrentes para procesamiento por lotes. Vea Procesos de trabajo de cola para más detalles.

MétodoFirmaAsyncDescripción
start(options)NoLanza pools de procesos
stop(queueName?)NoDetiene procesos, todos o por cola
pause()NoPausa todas las operaciones de extracción
resume()NoReanuda las operaciones de extracción
status() → WorkerPoolStatus[]NoObtiene el estado de todos los pools

WorkerStartOptions:

{
clearTabs?: boolean
layout?: "horizontal" | "vertical" | "quad"
workers: WorkerPoolOptions[]
}

WorkerPoolOptions:

{
queue: string
script: string
concurrency?: number
throttle?: { requestsPerMinute?: number }
dequeue?: string
requiresWorkflowEnvelope?: boolean
}

Defina requiresWorkflowEnvelope: true para colas pertenecientes a flujos de trabajo que solo deben procesar elementos vinculados a una envoltura de ejecución/elemento del Workflow Ledger.


Disponible solo dentro de scripts de procesos de trabajo.

MétodoFirmaAsyncDescripción
getContext() → WorkerContextNoObtiene el elemento actual, el ID de pestaña y el nombre de cola

WorkerContext:

{
item: QueueItem
tabId: string
queueName: string
}


Accede a tráfico HTTP capturado. La captura debe estar habilitada; lo está por defecto.

MétodoFirmaAsyncDescripción
search(query?, options?) → TrafficEntryInfo[]NoBusca tráfico capturado
getById(id) → TrafficEntryInfo | nullNoObtiene una entrada de tráfico específica
getResponseBody(id) → string | nullNoObtiene el cuerpo de respuesta
getRequestBody(id) → string | nullNoObtiene el cuerpo de solicitud
count() → numberNoCuenta entradas capturadas
clear()NoLimpia todo el tráfico capturado
enable()NoHabilita la captura de tráfico
disable()NoDeshabilita la captura de tráfico
isEnabled() → booleanNoComprueba si la captura está habilitada
waitForRequest(urlPattern, options?) → Promise<TrafficEntryInfo>Espera una solicitud coincidente

NetworkSearchOptions:

{
method?: string // "GET", "POST", etc.
statusMin?: number
statusMax?: number
contentType?: string
tabId?: string
limit?: number // default: 100
offset?: number // default: 0
sort?: string // timestamp, url, status, size, duration, method
order?: string // "asc" or "desc" (default)
}

WaitForRequestOptions:

{
method?: string
timeout?: number // default: 30000ms
}
async function main() {
await g.nav.navigateToUrl("https://api.example.com/data");
// Wait for the API response
const entry = await g.network.waitForRequest("api.example.com/data");
const body = g.network.getResponseBody(entry.id);
const data = JSON.parse(body);
g.log("Got " + data.items.length + " items");
}


MétodoFirmaAsyncDescripción
search(query?, options?) → NavigationEntryInfo[]NoBusca en el historial de navegación
count() → numberNoCuenta entradas del historial
clear()NoLimpia todo el historial

HistorySearchOptions:

{
tabId?: string
limit?: number // default: 100
offset?: number // default: 0
sort?: string // "timestamp" (default), "url", "status"
order?: string // "asc" or "desc" (default)
}


## g.robots.* — cumplimiento de robots.txt

Sección titulada «## g.robots.* — cumplimiento de robots.txt»

Comprobación automática de robots.txt para automatización con scripts. Habilitada por defecto.

MétodoFirmaAsyncDescripción
isAllowed(url) → Promise<boolean>Comprueba si una URL está permitida por robots.txt
getCrawlDelay(url) → Promise<number | null>Obtiene el crawl-delay de un dominio
disable()NoDeshabilita la comprobación robots.txt para este script
enable()NoVuelve a habilitar la comprobación robots.txt


Inspecciona y cambia entre flujos dentro de un espacio de trabajo.

MétodoFirmaAsyncDescripción
getActive() → WorkflowInfo | nullNoObtiene el nombre y ruta del flujo activo
list() → WorkflowListItem[]NoLista todos los flujos del espacio de trabajo
switch(name)NoCambia a un flujo; fire-and-forget, ocurre en el hilo de interfaz

WorkflowInfo:

{
name: string // workflow name
path: string // absolute path to workflow folder
}

WorkflowListItem:

{
name: string
enabled: boolean
hasEvents: boolean // has events.json triggers
hasWorkers: boolean // has workers.json config
hasTools: boolean // has tools/ directory
hasViews: boolean // has views/ directory
scriptCount: number // number of script files
}


## g.trigger.* — contexto de disparador de evento

Sección titulada «## g.trigger.* — contexto de disparador de evento»

Disponible dentro de scripts ejecutados por disparadores de eventos. Devuelve metadatos sobre por qué se invocó el script.

MétodoFirmaAsyncDescripción
getContext() → TriggerContextNoObtiene datos de evento para la ejecución actual

TriggerContext:

{
event: string // "url-match", "page-loaded", "tab-created", "tab-closed",
// "tab-activated", "external-queue", "dom-mutation"
tabId?: string // browser tab associated with the event
url?: string // page URL at the time of the event
timestamp: string // ISO 8601
pattern?: string // URL pattern that matched (url-match only)
// dom-mutation fields:
oldValue?: string // previous value
newValue?: string // new value
attribute?: string // changed attribute name (null for text changes)
mutationType?: string // "characterData", "attributes", or "childList"
selector?: string // CSS selector that matched
changes?: object[] // array of mutations (buffer strategy only)
}
async function main() {
const ctx = g.trigger.getContext();
if (ctx.event === "url-match") {
g.log("Matched " + ctx.pattern + " on " + ctx.url);
}
if (ctx.event === "dom-mutation") {
g.log(ctx.selector + " changed: " + ctx.oldValue + "" + ctx.newValue);
}
}