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étodo | Firma | Async | Descripción |
|---|---|---|---|
start | (options) | No | Lanza pools de procesos |
stop | (queueName?) | No | Detiene procesos, todos o por cola |
pause | () | No | Pausa todas las operaciones de extracción |
resume | () | No | Reanuda las operaciones de extracción |
status | () → WorkerPoolStatus[] | No | Obtiene 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.
## g.worker.* — contexto del proceso
Sección titulada «## g.worker.* — contexto del proceso»Disponible solo dentro de scripts de procesos de trabajo.
| Método | Firma | Async | Descripción |
|---|---|---|---|
getContext | () → WorkerContext | No | Obtiene el elemento actual, el ID de pestaña y el nombre de cola |
WorkerContext:
{ item: QueueItem tabId: string queueName: string}## g.network.* — tráfico de red
Sección titulada «## g.network.* — tráfico de red»Accede a tráfico HTTP capturado. La captura debe estar habilitada; lo está por defecto.
| Método | Firma | Async | Descripción |
|---|---|---|---|
search | (query?, options?) → TrafficEntryInfo[] | No | Busca tráfico capturado |
getById | (id) → TrafficEntryInfo | null | No | Obtiene una entrada de tráfico específica |
getResponseBody | (id) → string | null | No | Obtiene el cuerpo de respuesta |
getRequestBody | (id) → string | null | No | Obtiene el cuerpo de solicitud |
count | () → number | No | Cuenta entradas capturadas |
clear | () | No | Limpia todo el tráfico capturado |
enable | () | No | Habilita la captura de tráfico |
disable | () | No | Deshabilita la captura de tráfico |
isEnabled | () → boolean | No | Comprueba si la captura está habilitada |
waitForRequest | (urlPattern, options?) → Promise<TrafficEntryInfo> | Sí | 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}Ejemplo
Sección titulada «Ejemplo»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");}## g.history.* — historial de navegación
Sección titulada «## g.history.* — historial de navegación»| Método | Firma | Async | Descripción |
|---|---|---|---|
search | (query?, options?) → NavigationEntryInfo[] | No | Busca en el historial de navegación |
count | () → number | No | Cuenta entradas del historial |
clear | () | No | Limpia 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étodo | Firma | Async | Descripción |
|---|---|---|---|
isAllowed | (url) → Promise<boolean> | Sí | Comprueba si una URL está permitida por robots.txt |
getCrawlDelay | (url) → Promise<number | null> | Sí | Obtiene el crawl-delay de un dominio |
disable | () | No | Deshabilita la comprobación robots.txt para este script |
enable | () | No | Vuelve a habilitar la comprobación robots.txt |
## g.workflows.* — flujos de trabajo
Sección titulada «## g.workflows.* — flujos de trabajo»Inspecciona y cambia entre flujos dentro de un espacio de trabajo.
| Método | Firma | Async | Descripción |
|---|---|---|---|
getActive | () → WorkflowInfo | null | No | Obtiene el nombre y ruta del flujo activo |
list | () → WorkflowListItem[] | No | Lista todos los flujos del espacio de trabajo |
switch | (name) | No | Cambia 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étodo | Firma | Async | Descripción |
|---|---|---|---|
getContext | () → TriggerContext | No | Obtiene 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)}Ejemplo
Sección titulada «Ejemplo»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); }}