> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Início rápido de tarefas agendadas

> Crie uma tarefa agendada recorrente do PlayFab no Game Manager que invoca o CloudScript com uma expressão cron para ajustar os dados de título em uma cadência fixa.

Este início rápido mostra como criar uma tarefa que é executada de acordo com um agendamento. Há muitas rotinas de operação de jogos que podem ser automatizadas usando uma tarefa agendada, como:

* Modificar os preços em uma loja de acordo com a hora do dia.
* Atualizar os dados de título para refletir alterações de um evento atual.
* Injetar moedas virtuais na economia do jogo diariamente etc.

No exemplo usado neste início rápido, mostraremos como modificar uma variável do jogo chamada **rareDropRate** nos dados de título às 12:00 UTC e somente nos dias de fim de semana.

## Etapa 1 - Preparar o CloudScript

No **Game Manager**:

* Selecione **Automation** no menu à esquerda.
* Na guia **CloudScript Revisions**, adicione uma nova função do CloudScript chamada `adjustRareDropRate` com uma chamada simples à API `SetTitleData`, conforme mostrado no trecho de código e na imagem abaixo.

<Note>
  Para quem tem olhos atentos, não se preocupe: há um bug proposital ali. Certifique-se de implantar a nova revisão para que ela esteja ativa no seu jogo.
</Note>

Você pode saber mais sobre como usar o CloudScript no nosso [Início rápido do CloudScript](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript/quickstart) e na documentação do método [ExecuteCloudScript](xref:titleid.playfabapi.com.client.server-sidecloudscript.executecloudscript).

```javascript theme={null}
handlers.adjustRareDropRate = function(args) {
    // Tutorial demo CloudScript
    serverAPI.SetTitleData({
        "Key": "rareDropRate",
        "Value": args.dropRate
    });
}
```

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-cloudscript-deploy-new-revision.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=db6bc4f364ba1f9b4f28094921c2383c" alt="Game Manager - CloudScript - Implantar nova revisão" width="1280" height="700" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-cloudscript-deploy-new-revision.png" />

## Etapa 2 - Criar uma tarefa agendada

Agora, selecione **Servers** no menu à esquerda.

* Vá para a guia **Scheduled Tasks**.
* Selecione **New Scheduled Task** no canto superior direito da tela.
* Isso abrirá a exibição **Create Task**.
* No campo **Type of task**, escolha **Run a CloudScript function**.
* Abaixo disso, você poderá escolher uma função da revisão do CloudScript implantada no momento e especificar os argumentos a serem passados.
* Escolha o **adjustRareDropRate Handler** que você escreveu na etapa anterior.

Para definir o agendamento desta tarefa:

* Selecione **On a schedule (UTC)** no cabeçalho **SCHEDULE**.
* Um construtor de agendamento simples permite que você escolha quando a **Task** deve ser executada (a cada hora, dia, semana etc.).
* Para este exemplo, queremos um agendamento avançado, no qual podemos especificar em quais dias da semana executar a tarefa.
* Portanto, selecione **CRON EXPRESSION**.

A Expressão Cron, altamente personalizável, permite que você crie um agendamento muito complexo, mas é importante observar que atualmente permitimos *somente* agendamentos cujas ocorrências aconteçam em marcas de 5 minutos da hora.

Por exemplo, você pode especificar uma tarefa para ser executada no 5º, 10º, 25º ou 50º minuto da hora, mas *não* pode especificar uma tarefa para ser executada no 3º, 11º ou 46º minuto da hora.

Se você quiser saber mais sobre a Expressão Cron, o [crontab.guru](https://crontab.guru/) fornece informações detalhadas e um construtor de expressões interativo.

Neste caso, queremos que a tarefa seja executada às 12:00 UTC aos sábados e domingos, o que seria **00 12 \* \* 0,6**  (zero minutos após o meio-dia, todo domingo e sábado).

Por fim, certifique-se de salvar a nova tarefa antes de passar para a próxima etapa.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-new-scheduled-task.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=e8ee3518088be1728ac184868d985b53" alt="Game Manager - Tarefas - Nova tarefa agendada" width="1046" height="800" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-new-scheduled-task.png" />

## Etapa 3 - Testar a tarefa

Na exibição **Tasks** (**Servers** -> **Tasks**), podemos ver que a próxima execução da tarefa recém-criada é no *sábado* seguinte, conforme o esperado.

Portanto, se hoje for *terça-feira*, a próxima execução agendada seria *daqui a 4 dias*. Para testar a tarefa *agora*, selecione a tarefa **Adjust rare drop rate** e escolha **RUN TASKS**.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-run-tasks.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=ca99c453fb27cae7ee06c514a64bac32" alt="Game Manager - Tarefas - Executar tarefas" width="1920" height="600" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-run-tasks.png" />

## Etapa 4 - Verificar os resultados da execução de teste

Infelizmente, a execução da tarefa falhou. Selecione a instância da tarefa para ver o que deu errado.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-recent-task-executions-failed.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=140bddb5715b4815d89ad9f26bcbaa75" alt="Game Manager - Tarefas - Execuções recentes de tarefas - Falha" width="1870" height="253" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-recent-task-executions-failed.png" />

A exibição **Task Instance Details** fornece informações de diagnóstico sobre o motivo da falha da tarefa.

Neste caso, ela indica que a chamada para **serverAPI.SetTitleData** está incorreta. Na *verdade*, deveria ser **server.SetTitleData** (para obter uma explicação, consulte a seção **Intermediário: chamando as APIs de servidor** do tutorial [Escrevendo CloudScript personalizado](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript/writing-custom-cloudscript#intermediate-calling-the-server-apis)).

Também há outras informações importantes na exibição **Task Instance Details**, como os horários de início e término, a função que foi chamada, os argumentos passados, o resultado completo da execução do CloudScript e muito mais.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-task-instance-details.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=86e963959cb4c8aed29d5523031d0346" alt="Game Manager - Tarefas - Detalhes da instância da tarefa" width="1120" height="1869" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-task-instance-details.png" />

## Etapa 5 - Testar novamente (com êxito)

Vá em frente e corrija o erro que encontramos na Etapa 4. O trecho de código correto é mostrado abaixo.

```javascript theme={null}
handlers.adjustRareDropRate = function(args) {
    // Tutorial demo CloudScript
    server.SetTitleData({
        "Key": "rareDropRate",
        "Value": args.dropRate
    });
}
```

E agora, repetindo a Etapa 3, sua execução de teste final é bem-sucedida.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-recent-task-executions-successful.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=e67ce866e0b36227b39e3c829eea5000" alt="Game Manager - Tarefas - Execuções recentes de tarefas - Êxito" width="1686" height="446" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-tasks-recent-task-executions-successful.png" />

Para confirmar o êxito:

* Selecione **Content** no menu à esquerda.
* Vá para a guia **Title Data**.
* Verifique se a entrada de **Title Data** foi realmente definida.

<img src="https://mintcdn.com/microsoft-4404708b/IwSYTY5BEqd_x-HK/images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-content-title-data.png?fit=max&auto=format&n=IwSYTY5BEqd_x-HK&q=85&s=229b4658045991da01edcad22c512fef" alt="Game Manager - Conteúdo - Dados de título" width="1280" height="800" data-path="images/playfab/data-analytics/acting-data/scheduled-tasks/tutorials/game-manager-content-title-data.png" />


## Related topics

- [Tarefas agendadas](/pt-BR/services/playfab/data-analytics/acting-data/scheduled-tasks/index.md)
- [Documentação de dados e análises do PlayFab](/pt-BR/services/playfab/data-analytics/index.md)
- [Guia de início rápido do CloudScript do PlayFab usando Azure Functions](/pt-BR/services/playfab/live-service-management/service-gateway/automation/cloudscript-af/quickstart.md)
- [Início rápido de esquemas](/pt-BR/services/playfab/data-analytics/acting-data/schemas-quickstart.md)
- [Início rápido do Unity](/pt-BR/services/playfab/sdks/unity3d/quickstart.md)
