Se você quiser programar funções para serem executadas em horários especificados, use functions.pubsub.schedule().onRun() Este método de conveniência cria um tópico Pub/Sub e usa o Cloud Scheduler para acionar eventos nesse tópico, garantindo que sua função seja executada em o cronograma desejado.
Antes de você começar
Para usar esta solução em seu projeto do Firebase, seu projeto deve estar no plano de preços Blaze. Se ainda não estiver no plano Blaze, atualize seu plano de preços .
Embora o faturamento seja obrigatório, você pode esperar que o custo geral seja gerenciável, pois cada trabalho do Cloud Scheduler custa US$ 0,10 (USD) por mês e há um subsídio de três trabalhos por conta do Google, sem custo. Use a calculadora de preços do Blaze para gerar uma estimativa de custo com base no uso projetado.
As APIs Pub/Sub e Cloud Scheduler devem estar ativadas para seu projeto. Eles já devem estar ativados para a maioria dos projetos do Firebase; você pode verificar no Console do Google Cloud Platform .
Importante: o Cloud Scheduler exige que seu projeto tenha um aplicativo do App Engine ; durante a configuração, você será solicitado a selecionar o local de recurso padrão do Google Cloud Platform (GCP) do seu projeto . Esse local será usado para serviços do GCP em seu projeto que exigem uma configuração de local, especificamente, seu bucket padrão do Cloud Storage e seu banco de dados do Cloud Firestore.
Ao definir o local padrão do recurso GCP do seu projeto, considere principalmente onde você deseja armazenar seus dados e arquivos e, em segundo lugar, onde deseja executar as funções acionadas para o Cloud Firestore e o Cloud Storage. Depois de definir o local padrão do recurso do GCP do seu projeto, você não poderá alterá-lo.
Escreva uma função agendada
No Cloud Functions para Firebase, a lógica de programação reside no código das funções, sem requisitos especiais de tempo de implantação. Para criar uma função agendada, use functions.pubsub.schedule('your schedule').onRun((context)) . Por exemplo, para executar uma função a cada cinco minutos com a sintaxe cron.yaml do App Engine , faça algo assim:
exports.scheduledFunction = functions.pubsub.schedule('every 5 minutes').onRun((context) => {
  console.log('This will be run every 5 minutes!');
  return null;
});
As sintaxes Unix Crontab e App Engine são compatíveis com o Cloud Scheduler. Por exemplo, para usar o Crontab para selecionar um fuso horário específico no qual executar uma função agendada, faça algo assim:
exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {
  console.log('This will be run every day at 11:05 AM Eastern!');
  return null;
});
O valor para timeZone deve ser um nome de fuso horário do banco de dados tz . Consulte a referência do Cloud Scheduler para obter mais informações sobre propriedades compatíveis.
Implantar uma função agendada
Quando você implanta uma função agendada, o trabalho do agendador relacionado e o tópico pub/sub são criados automaticamente. A Firebase CLI reproduz o nome do tópico, e você pode visualizar o job e o tópico no console do GCP . O tópico é nomeado de acordo com a seguinte convenção:
firebase-scheduled- function_name - region
Por exemplo:
firebase-scheduled-scheduledFunctionCrontab-us-east1.
Importante: Certifique-se de não excluir ou modificar manualmente o tópico ou a tarefa do planejador no console. Fazer isso pode causar erros na execução de sua função agendada.
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.