Início
» Dicas para PC
»
Execute Python no Calc através do sistema de macros do LibreOffice.
Execute Python no Calc através do sistema de macros do LibreOffice.
Se um script Python for executado a partir do seu terminal, mas não conseguir ler ou alterar a planilha aberta no Calc, provavelmente está sendo executado fora do LibreOffice. Uma macro Python do Calc precisa ser executada dentro do processo do LibreOffice, onde o LibreOffice fornece o contexto do documento ativo. Salve o script como um módulo na sua pasta de scripts Python do usuário, exporte sua função com `export` g_exportedScriptse execute-a a partir da caixa de diálogo de macros do Calc.
Este é o caminho mais simples para uma pequena automação vinculada à planilha aberta. A ajuda atual do LibreOffice para scripts Python descreve tanto macros integradas ao processo quanto scripts Python conectados separadamente; os passos abaixo utilizam o método integrado ao processo.
Por que um script Python comum não consegue acessar a planilha aberta?
O LibreOffice expõe o documento atual a uma macro Python em execução por meio da variável global `__name__` XSCRIPTCONTEXT. Um script executado com seu pythoncomando normal é um processo separado, portanto, essa variável global não está disponível automaticamente. Ele ainda pode se comunicar com o LibreOffice, mas isso requer o estabelecimento de uma conexão UNO com um processo do Office já em execução. Para uma primeira macro, execute a função dentro do LibreOffice.
Uma macro em Python é uma função dentro de um .pymódulo. A g_exportedScriptstupla do módulo informa ao LibreOffice quais funções devem ser exibidas na lista de macros. Esses detalhes estão documentados na referência de programação em Python do LibreOffice .
Como adicionar uma macro Python ao Calc?
1. Localize a pasta de scripts Python do usuário.
Use a pasta "Minhas Macros" se desejar um script que possa ser executado em qualquer documento do LibreOffice aberto em sua conta de usuário. O LibreOffice descreve a pasta como "Minhas Macros" %APPDATA%\LibreOffice\4\user\Scripts\pythonno Windows, " Minhas $HOME/.config/libreoffice/4/user/Scripts/pythonMacros" no Linux e "Minhas Macros" no macOS. Se as Scripts/pythonpastas ainda não existirem, crie-as. A referência de locais de script também explica os outros contêineres de macros: Macros de Aplicativo e macros incorporadas em um documento.
Coloque o módulo de macro na pasta Scripts/python do usuário para que o LibreOffice possa listá-lo em "Minhas Macros".
As macros de documentos são armazenadas em um arquivo específico e só podem ser acessadas enquanto esse documento estiver aberto. Para um utilitário pessoal reutilizável, "Minhas Macros" geralmente é mais fácil de manter. Evite modificar a pasta de macros do LibreOffice, que é gerenciada por todo o aplicativo, pois isso pode exigir acesso de administrador.
2. Crie e exporte uma pequena função de teste.
Abra um editor de texto simples, crie hello_calc.pya pasta acima e adicione:
A função obtém o documento atualmente conectado à chamada da macro, seleciona sua primeira planilha e escreve uma string de teste inofensiva em A1. A última linha é importante: sem a tupla exportada, a função pode não aparecer como uma macro executável. Salve o arquivo como texto simples com a .pyextensão .txt, não como um documento de texto formatado ou um arquivo com a extensão .txt .py.txt.
A função exportada usa XSCRIPTCONTEXT para acessar o documento aberto e escrever um valor de teste na célula A1.
O LibreOffice fornece XSCRIPTCONTEXTa variável para o módulo de macros. Ele não a passa automaticamente para os módulos importados pelo seu código, portanto, mantenha o primeiro teste independente. Se posteriormente você dividir funções reutilizáveis em outros módulos, siga as orientações do LibreOffice para importação de módulos Python .
3. Abra um arquivo do Calc e execute a função exportada.
Abra uma planilha de teste no Calc. Use uma cópia ou uma planilha em branco durante o desenvolvimento.
Selecione Ferramentas > Macros > Executar Macro .
Na lista de bibliotecas, expanda "Minhas Macros" , escolha o módulo Python e selecione hello_calcum dos nomes de macro.
Clique em Executar .
A mesma função pode ser iniciada a partir da extensão APSO, que o LibreOffice recomenda para scripts Python em processo e também fornece um shell Python. Você não precisa do APSO para o fluxo básico de execução de macro descrito aqui.
Selecione a função hello_calc exportada em "Minhas Macros" e execute-a no Calc.Um valor visível em A1 confirma que a macro de teste alcançou o documento do Calc e alterou uma célula.
E se a macro estiver ausente ou aparentemente não fizer nada?
Em vez de alterar configurações de segurança gerais, siga estas etapas de verificação:
O módulo não está listado: confirme se o arquivo está no Scripts/pythoncaminho de usuário correto, se possui um .pysufixo e se contém uma g_exportedScriptstupla com a grafia correta. Reabra a caixa de diálogo da macro; se o LibreOffice ainda não listar o arquivo recém-adicionado, feche e reinicie o LibreOffice e verifique novamente.
O nome da macro está faltando: certifique-se de que a tupla exportada inclua o objeto da função, por exemplo (hello_calc,). A vírgula transforma isso em uma tupla Python de um único item.
Nada aparece no terminal: a saída print()não está disponível quando macros do Python são executadas a partir da caixa de diálogo de macros padrão. O teste acima escreve em A1, portanto o resultado é visível na planilha. Para depuração interativa, o shell do APSO exibe a saída.
A importação falhou: instalar um pacote para o Python do seu sistema não garante que o ambiente de execução do Python do LibreOffice consiga importá-lo. O pacote precisa estar disponível no caminho do Python do ambiente de execução; as diretrizes oficiais de importação descrevem os caminhos de módulos de usuário e compartilhados. Comece testando a macro sem importações opcionais.
Aparece um aviso de segurança: execute apenas scripts que você escreveu ou revisou e nos quais confia. A segurança de macros existe para limitar códigos inseguros; não reduza o nível de segurança global apenas para executar a macro de um documento desconhecido. Consulte as opções de segurança de macros do LibreOffice se precisar entender o aviso.
Escolha a abordagem de processo externo somente quando sua automação precisar ser iniciada a partir de um terminal, agendador ou outro aplicativo. O LibreOffice exige que você inicie o processo do Office com um pipe ou socket e se conecte por meio de sua ponte UNO; um script independente comum não é equivalente a uma macro do Calc em execução no mesmo processo.
Como você pode verificar se a macro funcionou?
Após clicar em Executar, observe a célula A1 na primeira planilha. Ela deve conter "Olá do Python" e a barra de fórmulas deve exibir o mesmo texto quando A1 estiver selecionada. Se a célula permanecer inalterada, confirme se a pasta de trabalho desejada estava ativa e se a macro foi selecionada em "Minhas Macros". Assim que este teste mínimo for bem-sucedido, substitua o texto de teste pelo seu cálculo real e teste-o em uma cópia da pasta de trabalho antes de usá-lo com dados importantes.