Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

247
Visualizações
Al hacer una lista por solicitud de consulta en GMail a través de C#, ¿cuál es la "fuente"?

Contexto: C#, JavaScript, ClearScript

He escrito un complemento para mi JavaScript habilitado para ClearScript que se conecta a GMail. Todo está bien con respecto a OAuth2, etc. Lo que no funciona es una consulta en la bandeja de entrada. Si solicito la bandeja de entrada sin una consulta, eso me da datos, pero no quiero millones de registros.

 attach(".\\Plugin_GMail.dll") var tuple = Plugin_GMail.GoogleMail.Mail.Mail_Authenticate(REDACTED) var service = Plugin_GMail.GoogleMail.Mail.Mail_CreateService(tuple.Item1, "mail") var request = service.Users.Labels.List("me"); var labels = request.Execute().Labels; var before = new Date(2022,11,31).valueOf(); var after = new Date(2022,0,1).valueOf(); var res = Plugin_GMail.GoogleMail.Mail.Messages_ListByQuery(service, "me", "before:$b after:$a".replace("$b",before).replace("$a",after),true)

El código para Messages_ListByQuery es

 public static string Messages_ListByQuery(GmailService service, string userId, string query, bool debug = false) { if (debug) Debugger.Launch(); var msgList = new List<Message>(); var result = new JSONResponse(); var request = service.Users.Messages.List(userId); request.MaxResults = 500; request.Q = query; request.LabelIds = "INBOX"; while (true) { try { var msgs = request.Execute().Messages; if (msgs.Count() == 0) { break; } msgList.AddRange(msgs); } catch (Exception e) { result.Error = e.Message; break; } } result.Cargo = msgList; return JsonConvert.SerializeObject(result); }

Entonces, la respuesta después de ejecutar la lista basada en consultas es

 {"Error":"Value cannot be null.\r\nParameter name: source","Cargo":[],"Crew":null}

He revisado la documentación y no puedo encontrar nada sobre "fuente". Y tampoco hay nada en Playground sobre "fuente". ¿Dónde sigue?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Su código le dice que simplemente haga un ciclo para siempre, obteniendo la misma página de resultados.

 while (true) // loop forever { try { var msgs = request.Execute().Messages; // get first page of results if (msgs.Count() == 0) { break; // will never hit unless user has no messages. in their inbox at all. } msgList.AddRange(msgs); // keeps adding first page of messages over and over. } catch (Exception e) { result.Error = e.Message; break; } }

La línea

 var msgs = request.Execute().Messages;

Solo va a decir ejecutar la solicitud y recibir mensajes. Lo que siempre devolverá mensajes mientras ejecuta la misma solicitud una y otra vez.

La siguiente línea solo agregará los mensajes a su lista.

 msgList.AddRange(msgs);

Entonces, con el tiempo verdadero, le está diciendo a su aplicación que simplemente solicite las mismas 500 filas una y otra vez para siempre.

En su lugar, debe considerar usar el token de la página siguiente y obtener la siguiente página de resultados en lugar de los mismos resultados una y otra vez.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda