phpba / php-business-ba

Empresas na Bahia que trabalham com PHP
7 stars 9 forks source link

Criar script para ler o form do Google Forms e gerar o json #5

Open gwmoura opened 8 years ago

gwmoura commented 8 years ago

Pensei em criar um script para ler a planilha de resultados do google form ou o mais fácil um csv público e gerar o json apropriado.

Achei essa resposta no stackoverflow: http://stackoverflow.com/a/23394860/2891567

Podemos ser o csv público assim:

edyonil commented 8 years ago

Vi esse package. Parece ser muito simples de trabalhar. https://github.com/asimlqt/php-google-spreadsheet-client

gwmoura commented 8 years ago

@edyonil dei uma olhada, ela bem interessante, podemos até manipular a planilha no google, mas acho q ler apenas um csv fica mais simples... Vou ver se consigo fazer uns testes com esse pacote.

edyonil commented 8 years ago

@gwmoura, entendi sua explicação. De fato ler o CSV vai ser a melhor implementação. Só temos que pedir a @vinaocruz para liberar o form público, somente leitura.

Vou dar um Fork e vou fazer aquela ideia que te falei no evento. Vou criar um issue para isso

gwmoura commented 8 years ago

;)

A ideia é rodar esse script antes dos testes

edyonil commented 8 years ago

Fiz um teste com as duas opções publicados no stack @gwmoura. Ambas não conseguir ler o arquivo limpo. Usando tanto file_get_contents, como fopen e tb curl, o retorno é um monte de códigos htmls, css e javascript. Olhando um pouco mais em baixo nos comentários o cara mostrou a solução:

http://stackoverflow.com/a/23702001

Esse consigo abrir o arquivo com o fopen ou file_get_contents limpo em csv. Segue um código que estou utilizando para testar com uma planilha minha no google docs:

$spreadsheet_url="https://docs.google.com/spreadsheets/d/1xJMTHaZZJrl1Vpt75Xx3zxz7HSoiUIqvzvDj3HX-4UE/export?gid=0&format=csv&id=1xJMTHaZZJrl1Vpt75Xx3zxz7HSoiUIqvzvDj3HX-4UE";

        ini_set('default_socket_timeout',    15)

        $spreadsheet_data = [];

        if (($handle = fopen($spreadsheet_url, "r")) !== FALSE) {
            while (($data = fgetcsv($handle, null, ",")) !== FALSE) {
                $spreadsheet_data[]=$data;
            }
        }
        fclose($handle);

        var_dump($spreadsheet_data);

É um código apenas de teste, mas que irei usar para ler o CSV. Sendo que é necessário o arquivo está publico!

edyonil commented 8 years ago

Galera, só vamos se ligar que hoje o cadastro está rolando pelo google form que vini criou. Quando colocar novos campos no Json temos que colocar lá tb, porque se não vai quebrar o código que ler o csv de lá, se ligou!

edyonil commented 8 years ago

Agora vou começar a trabalhar na classe cliente, que vai ler os dados do repositório e vai criar o arquivo json. @vinaocruz disse que eu não posso somente sobrescrever o arquivo json, terei que ler e comparar as empresas e apenas adicionar as novas cadastradas. Isso porque permitiremos cadastrar as empresas diretamente no json.

Removi a ideia de criar uma abstração para ler o arquivo. Não faz sentido ter essa classe. Será apenas um arquivo mesmo.