- Golang 1.22.2
- IDE ou editor de texto (vs-code, goland, etc)
- Clonar este repositório: https://github.com/buscaresgatados/pesquisa-listas/
- Acessar este trello: https://trello.com/b/aZRYM4UL/busca-resgatados
- Baixar o arquivo
config.zip
disponível no grupo do discord, no canal #docs - Descompactar estes arquivos no root da pasta
service
Os únicos arquivos necessários para o scraping das planilhas são:
service/sheetscraper/config.go
service/sheetscraper/sheets.go
Criar um novo objeto ao final do arquivo, com a seguinte estrutura:
{
id: "<ID_DA_PLANILHA>",
sheetRanges: []string{"<NOME_DA_ABA>!A1:ZZ"},
name: "<NOME_DA_PLANILHA>",
},
NOTE: O ID da planilha está depois de
/d/
:
https://docs.google.com/spreadsheets/d/abc123456/edit?pli=1#gid=972231790.
Neste caso:abc123456
Criar um novo case
dentro da função Scrape
, pelo <ID_DA_PLANILHA> + <NOME_DA_ABA!A1:ZZ>
. Exemplo:
case "1-cA0MB_1aQTOtXVL2pyPWSXjuTMg6U1PsyBAICjdGxo" + "Sheet1!A1:ZZ":
for i, row := range content.([][]interface{}) {
/* O primeiro condicional é sobre o index da linha.
Com i < 1, o script pulará a primeira linha (que
teria index 0). Isso é útil para pular cabeçalhos.
O segundo condicional é sobre o comprimento de cada
linha. Nesse caso, o script ignorará linhas que tiverem
menos de 3 ítens. Dessa forma, evitamos erros quando
tentarmos acessar indexes do row acima de 2 (já que o
index 2 é o terceiro ítem de uma lista)
*/
if i < 1 || len(row) < 3 {
continue
}
p := objects.Pessoa{
Abrigo: row[2].(string),
Nome: row[1].(string),
Idade: "",
}
if os.Getenv("ENVIRONMENT") == "local" {
fmt.Fprintf(os.Stdout, "%+v\n", p)
}
serializedData = append(serializedData, &objects.PessoaResult{
Pessoa: &p,
SheetId: &cfg.id,
Timestamp: time.Now(),
})
}
Para testar o script, rode esse comando:
export $(cat .env | xargs ) && go build -o app && ./app scrape --isDryRun=true
O output será printado no console. Ele deverá conter a seguinte estrutura:
{Abrigo:Associacao Nome:Eva Tavares Idade:}
{Abrigo:Associacao Nome:Cristiano Camargo Idade:}
{Abrigo:Associacao Nome:Nara Regina Pedroso Idade:}
Após validar que a estrutura está correta, o script deve ser rodado com --dryRun=false
Isso vai fazer com que os dados sejam salvos no Banco de Dados.
Após rodar o script, commitar no repositório as mudanças.
Obrigado por contribuir!