Skip to content

buscaresgatados/pesquisa-listas

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Contribuindo com o projeto

Ferramentas necessárias

Passos

Editando arquivos

Os únicos arquivos necessários para o scraping das planilhas são:

  • service/sheetscraper/config.go
  • service/sheetscraper/sheets.go

config.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

sheets.go

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(),
	})
}

Running the script

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!