Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Google Docs Table Renderer

Script que baixa uma tabela de um documento Google Docs, salva os dados como CSV e os transforma em um grid de texto (arte ASCII) usando coordenadas X/Y.

Sumário

Como funciona

O documento Google Docs contém uma tabela em que cada linha representa um caractere com sua posição:

  • x-coordinate: coluna (horizontal) onde o caractere deve ser desenhado
  • y-coordinate: linha (vertical) onde o caractere deve ser desenhado
  • Character: o caractere a ser desenhado na posição

O script baixa essa tabela, salva em table.csv e reconstrói a imagem como texto em rendered.txt.

Dependências

Instale as dependências listadas em requeriments.txt:

pip install -r requeriments.txt

Principais bibliotecas usadas:

  • requests — baixa o documento do Google Docs
  • pandas — parsing do HTML, manipulação de tabelas e CSV
  • lxml — parser de HTML usado pelo pandas.read_html

Como usar

python render_google_docs.py

O programa pede a URL do documento Google Docs:

This program downloads a table from a Google Docs document and renders it as text.
Enter the Google Docs URL: https://docs.google.com/document/d/...

Também é possível passar a URL diretamente como argumento:

python render_google_docs.py "https://docs.google.com/document/d/..."

O script aceita três formatos de link:

  • Publicado para a web: https://docs.google.com/document/d/e/{ID}/pub
  • Compartilhado (documento): https://docs.google.com/document/d/{ID}/edit...
  • Compartilhado (planilha): https://docs.google.com/spreadsheets/d/{ID}/edit...

Ao final, dois arquivos são gerados no diretório atual:

Arquivo Conteúdo
table.csv Tabela baixada do documento
rendered.txt Texto renderizado a partir das coordenadas X/Y

Gerador de tabela (engenharia reversa)

O generate_table.py faz o caminho inverso do render_google_docs.py: em vez de transformar coordenadas em texto, ele transforma texto em coordenadas, gerando um table.csv no mesmo formato — pronto para ser colado em um documento Google Docs.

Como usar

python generate_table.py "SUAS PALAVRAS AQUI"
# ou de forma interativa:
python generate_table.py

Gera table.csv e rendered.txt no diretório atual.

Como funciona

  • Fonte bitmap de 7 linhas de altura (definida em font.json), no mesmo estilo /, com suporte a A–Z, 0–9, espaço e pontuação básica (', ., ,, !, ?).
  • Cada letra é um glifo de pixels; os glifos são empilhados lado a lado com 1 coluna de separação entre letras.
  • text_to_grid(texto) — converte o texto em uma grade altura × largura.
  • grid_to_csv(grade) — grava cada célula preenchida como uma linha x,caractere,y, com o cabeçalho 0,1,2 / x-coordinate,Character,y-coordinate.
  • render_to_file() — reaproveita o render() do render_google_docs.py para gerar também o rendered.txt.
flowchart LR
    A[Texto do usuário] --> B[Fonte bitmap 7 linhas █/░]
    B --> C[Glifos lado a lado]
    C --> D[text_to_grid]
    D --> E[grid_to_csv]
    E --> F[table.csv]
    F --> G[render_google_docs.py render]
    G --> H[rendered.txt]
Loading

Caracteres suportados

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
0 1 2 3 4 5 6 7 8 9
espaço   ' . , ! ?

Funções

download(url, table=0)

Baixa a tabela do documento Google Docs.

  • Extrai o ID do documento analisando os segmentos da URL com urlparse:
    • URLs no formato .../document/d/{id}/edit usam o export em HTML: https://docs.google.com/document/d/{id}/export?format=html
    • URLs no formato .../document/d/e/{id}/pub usam a versão publicada: https://docs.google.com/document/d/e/{id}/pub
    • Formatos não reconhecidos levantam ValueError
  • Faz requests.get no HTML e interpreta as tabelas com pd.read_html
  • Retorna a tabela de índice table (padrão 0) ou levanta IndexError se o índice não existir

save(df, path="table.csv")

Salva o DataFrame em um arquivo CSV.

load(file="table.csv")

Lê o CSV gerado e retorna um DataFrame. Lança FileNotFoundError se o arquivo não existir.

render(df)

Converte o DataFrame de coordenadas em texto:

  • Se a primeira célula for x-coordinate, usa a primeira linha como cabeçalho
  • Normaliza os nomes das colunas (minúsculas e - vira _): x_coordinate, y_coordinate, character
  • Cria uma grade de tamanho largura = max(x) + 1 por altura = max(y) + 1 preenchida com espaços
  • Insere cada caractere na posição (x, y)
  • Junta as linhas em uma única string

save_rendered_text(text, path="rendered.txt")

Salva o texto renderizado em um arquivo.

main()

Orquestra o fluxo completo: baixa → salva CSV → carrega → renderiza → salva texto. A URL é lida de um argumento de linha de comando ou solicitada via prompt.

Fluxo do programa

flowchart TD
    A[Usuário insere URL do Google Docs] --> B[download url]
    B --> C{Valida segmentos da URL}
    C -- "/d/e/..." --> D["Publicado: /d/e/{id}/pub"]
    C -- "/d/{id}/edit..." --> E["Export HTML: /d/{id}/export?format=html"]
    C -- "/spreadsheets/d/..." --> P["Planilha: gviz/tq?tqx=out:html&gid=0"]
    C -- outro --> F[raise ValueError]
    D --> G[requests.get HTML]
    E --> G
    P --> G
    G --> H[pd.read_html header=0]
    H --> I[Seleciona tabela table=0]
    I --> J[save table.csv]
    J --> K[load table.csv]
    K --> L[render grade X/Y]
    L --> M[save_rendered_text rendered.txt]
    M --> N[Arquivos gerados]
Loading

Exemplo de saída

Dado o table.csv gerado, rendered.txt contém a imagem reconstruída:

 █████░ ██████░  █████░  █████░ ██░     ██████░ ██░ ██░  █████░
██░ ██░ ██░     ██░     ██░ ██░ ██░       ██░   ██░ ██░ ██░ ██░
██░ ██░ ██░     ██░     ██░ ██░ ██░       ██░   ██░ ██░ ██░ ██░
██░ ██░ █████░  ██░     ██░ ██░ ██░       ██░   ██░ ██░ ██████░
██░ ██░ ██░     ██░     ██░ ██░ ██░       ██░   ██░ ██░ ██░ ██░
██░ ██░ ██░     ██░     ██░ ██░ ██░       ██░    ██░█░  ██░ ██░
 █████░ ██░      █████░  █████░ ██████░ ██████░   ███░  ██░ ██░

Como publicar a tabela no Google Docs

Depois de gerar o table.csv com o generate_table.py, siga os passos abaixo para levá-lo ao Google Docs.

Passo 1: Importar para o Google Planilhas (ponte)

  1. Abra o Google Drive.
  2. Faça o upload do seu arquivo .CSV.
  3. Clique com o botão direito no arquivo enviado e escolha Abrir com > Google Planilhas.
  4. Selecione todas as células da tabela com dados (incluindo o cabeçalho) e pressione Ctrl + C (ou Cmd + C no Mac) para copiar.

Passo 2: Colar no Google Docs

  1. Crie um novo documento no Google Docs.
  2. Adicione o texto superior se necessário (ex: "The table below contains the input data...").
  3. Pressione Ctrl + V (ou Cmd + V) para colar.
  4. O Google Docs perguntará como deseja colar:
    • Escolha "Colar sem link" (Paste unlinked) para que os dados fiquem fixos diretamente no documento.
  5. A tabela será criada automaticamente com as colunas e linhas delimitadas com bordas pretas.

Confira a estrutura da tabela no documento: linha 1 = 0,1,2, linha 2 = x-coordinate,Character,y-coordinate, seguida dos dados.

Passo 3: Compartilhar o link

Para que outra pessoa consiga usar o render_google_docs.py com o seu documento:

  • Publicado para a web: no Docs, File > Share > Publish to web > Publish → link https://docs.google.com/document/d/e/{ID}/pub.
  • Compartilhado com o link: File > Share > Share → opção "Anyone with the link can view" → link https://docs.google.com/document/d/{ID}/edit.

Os dois formatos são aceitos pelo render_google_docs.py.

Para quem vai usar o script

A pessoa precisa receber os arquivos render_google_docs.py, generate_table.py e requeriments.txt, instalar as dependências e rodar:

pip install -r requeriments.txt
python render_google_docs.py

Em seguida, basta colar o link compartilhado. Os arquivos table.csv e rendered.txt serão gerados no diretório atual.

About

Script que baixa uma tabela de um documento Google Docs, salva os dados como CSV e os transforma em um grid de texto (arte ASCII) usando coordenadas X/Y.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages