user:heliosvoting:admgeralista

Atenção!

Formatando a lista de eleitores

Após a comissão eleitoral receber a lista de eleitores disponibilizada pelos setores competentes é necessário deixar a lista no formato a ser carregado no Helios.

Para isso foram criados alguns scripts para auxiliar a formatação das informações.

CPF para HELIOS

Gerando lista de votantes a partir do arquivo contendo os CPFs

Para gerar o arquivo de importação do Helios a partir do arquivo recebido (ou tratado) com somente o CPF (um por linha) foi criada uma função a ser executada no PowerShell (abaixo):

Function cpf2helios( $CPF_FILE, $HELIOS_FILE ) {
    # ====================================================================================
    If ( !$CPF_FILE ) { $CPF_FILE = ".\arquivo_com_cpfs.txt" }
    If ( !(Test-Path -Path $CPF_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break }
    # ------------------------------------------------------------------------------------
    If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\arquivo_helios.csv" }
    # ------------------------------------------------------------------------------------
    Write-Host "Parametros configurados:"
    Write-Host "- Arquivo de entrada (CPF).: $CPF_FILE"
    Write-Host "- Arquivo de saida (HELIOS): $HELIOS_FILE"
    # ====================================================================================
    Write-Host "Iniciando Processamento:"
    # ------------------------------------------------------------------------------------
    Write-Host "- Excluindo arquivo de saida se já existente."
    If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE }
    # ------------------------------------------------------------------------------------
    Write-Host "- Processando registros do arquivo entrada."
    $CONTA_REGISTRO = 0
    Get-Content $CPF_FILE | ForEach-Object {
        If ( Get-ADUser -Identity $_ -Properties SamAccountName,mail,displayName ) {
            $USUARIO = ( Get-ADUser -Identity $_ -Properties SamAccountName,mail,displayName )
            $CPF  = $USUARIO.SamAccountName
            $MAIL = $USUARIO.mail
            $NOME = $USUARIO.displayName
            $CONTA_REGISTRO++
            Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE
            Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO"
        }
    }
    # ====================================================================================
    Write-Host "Processamento finalizado!"
    # ====================================================================================
}

Siga os seguintes passos para executar o script:

  1. Copie a função e cole diretamente no PowerShell, isto vai criar uma função na sessão no shell e você poderá executá-la múltiplas vezes apenas chamando: cpf2helios na linha de comando.
  2. O arquivo de entrada deve conter somente CPFs (um por linha).
  3. Execute a função passando os parâmetros conforme abaixo:
cpf2helios
# default: ARQUIVO_DE_ENTRADA = .\arquivo_com_cpfs.txt e ARQUIVO_DE_SAIDA = .\arquivo_helios.csv

ou

cpf2helios -CPF_FILE ARQUIVO_DE_ENTRADA
# default: ARQUIVO_DE_SAIDA = .\arquivo_helios.csv

ou

cpf2helios -CPF_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE ARQUIVO_DE_SAIDA

SIGA para HELIOS

Gerando lista a partir do arquivo de alunos exportado pelo SIGA (com CPF e separados por curso).

Para gerar o arquivo de importação do Helios a partir do arquivo gerado pelo SIGA foi criada uma função a ser executada no PowerShell (abaixo):

Function siga2helios( $SIGA_FILE, $HELIOS_FILE ) {
    # ====================================================================================
    $SIGA_TMP_FILE = ".\arquivo_tmp_siga.csv"
    # ------------------------------------------------------------------------------------
    If ( !$SIGA_FILE ) { $SIGA_FILE = ".\alunos_siga.txt" }
    If ( !(Test-Path -Path $SIGA_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break }
    # ------------------------------------------------------------------------------------
    If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\alunos_helios.csv" }
    # ------------------------------------------------------------------------------------
    Write-Host "Parametros configurados:"
    Write-Host "- Arquivo de entrada (SIGA): $SIGA_FILE"
    Write-Host "- Arquivo de saida (HELIOS): $HELIOS_FILE"
    # ====================================================================================
    Write-Host "Iniciando Processamento:"
    # ------------------------------------------------------------------------------------
    Write-Host "- Excluindo arquivo de saida se já existente."
    If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE }
    # ------------------------------------------------------------------------------------
    Write-Host "- Convertendo arquivo temporario em ASCII (por causa da acentuação)."
    Get-Content $SIGA_FILE | Set-Content -Encoding ascii $SIGA_TMP_FILE
    # ------------------------------------------------------------------------------------
    Write-Host "- Processando registros do arquivo entrada."
    $CONTA_REGISTRO = 0
    Import-Csv -Delimiter "|" $SIGA_TMP_FILE | ForEach-Object {
        $ID = $_.CIC
        If ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName ) {
            $USUARIO = ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName )
            $CPF  = $USUARIO.SamAccountName
            $MAIL = $USUARIO.mail
            $NOME = $USUARIO.displayName
            $CONTA_REGISTRO++
            Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE
            Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO"
        }
    }
    # ====================================================================================
    Write-Host "- Excluindo arquivos temporarios."
    If ( Test-Path -Path $SIGA_TMP_FILE ) { rm $SIGA_TMP_FILE }
    # ------------------------------------------------------------------------------------
    Write-Host "Processamento finalizado!"
    # ====================================================================================
}

Siga os seguintes passos para executar o script:

  1. Copie a função e cole diretamente no PowerShell, isto vai criar uma função na sessão no shell e você poderá executá-la múltiplas vezes apenas chamando: siga2helios na linha de comando.
  2. Execute a função passando os parâmetros conforme abaixo (no mínimo contendo o CENTRO de Ensino):
siga2helios -CENTRO SIGLA_DO_CENTRO 
# default: ARQUIVO_DE ENTRADA = .\alunos_siga.txt e ARQUIVO_DE_SAIDA = .\alunos_helios.csv

ou

siga2helios -CENTRO SIGLA_DO_CENTRO -SIGA_FILE ARQUIVO_DE_ENTRADA
# default: ARQUIVO_DE_SAIDA = .\alunos_helios.csv

ou

siga2helios -CENTRO SIGLA_DO_CENTRO -SIGA_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE ARQUIVO_DE_SAIDA

Observações:

  1. Sempre que a função executa, o arquivo gerado é apagado (se já existente) então lembre-se de copiá-lo se quiser mantê-lo.
  2. O arquivo original possui cabeçalho e o gerado não, então sempre vai existir 01 (uma) linha de diferença entre os dois.

Em algumas situações, a secretaria acadêmica e/ou de pós graduação poderão enviar vários arquivos, um para cada curso, por exemplo. O seguinte script foi criado para gerar um arquivo .csv no formato do Helios para cada arquivos .txt dentro de uma determinada pasta. Necessário se atentar aos detalhes:

  • O script siga2helios já deve estar disponível no PowerShell;
  • Se atentar a parte $PastaEntrada, colocar o caminho completo ou $PWD caso já esteja na pasta dos arquivos .txt;
  • Na chamada da função siga2helios, alterar para o centro de acordo com o seu;
  • Basta copiar e colar o script no PowerShell.
# Script para converter todos os arquivos .txt em uma pasta para .csv
 
# Definir a pasta de entrada
$PastaEntrada = "C:\Pasta\Com\Arquivos\SIGA" #utilize $PWD, sem aspas, caso esteja na pasta dos arquivos
 
# Obter todos os arquivos .txt na pasta
$ArquivosSIGA = Get-ChildItem -Path $PastaEntrada -Filter *.txt
 
# Loop para cada arquivo .txt
foreach ($ArquivoSIGA in $ArquivosSIGA) {
  # Extrair o nome do arquivo sem a extensão
  $NomeArquivo = $ArquivoSIGA.BaseName
 
  # Gerar o nome do arquivo CSV
  $ArquivoCSV = "$NomeArquivo.csv"
 
  # Chamar a função para converter o arquivo, não esqueça de alterar para o seu centro
  siga2helios -CENTRO CENTRO -SIGA_FILE $ArquivoSIGA.FullName -HELIOS_FILE $ArquivoCSV
 
  # Exibir mensagem de sucesso
  Write-Host "Arquivo $ArquivoCSV gerado com sucesso!"
}
 
# Mensagem de finalização
Write-Host "Todos os arquivos .txt na pasta foram convertidos para .csv no formato do Helios!"

SIGRH para HELIOS

Gerando lista de votantes a partir do arquivo gerado pelo RH

Para gerar o arquivo de importação do Helios a partir do arquivo Excel encaminhado pelo RH foi criada uma função a ser executada no PowerShell (abaixo):

Function excel2csv ($FILE) {
    # ====================================================================================
    $EXCEL_FILE = "$(Get-Location)\$FILE" -replace '\.\\',''
    $CSV_FILE   = $EXCEL_FILE.Split(".")[0] + ".csv"
    $TMP_FILE   = $EXCEL_FILE.Split(".")[0] + "_temp.csv"
    # ------------------------------------------------------------------------------------
    Write-Host "  * Abrindo a planilha no Excel."
    $EXCEL_APP = New-Object -ComObject Excel.Application
    $WB        = $EXCEL_APP.Workbooks.Open($EXCEL_FILE)
    # ------------------------------------------------------------------------------------
    Write-Host "  * Salvando a planilha como CSV."
    ForEach ($WS in $WB.Worksheets) {
        $WS.SaveAs($TMP_FILE, 6)
    }
    # ------------------------------------------------------------------------------------
    Write-Host "  * Finalizando o processo Excel."
    $EXCEL_APP.Quit()
    Stop-Process -ProcessName EXCEL
    # ------------------------------------------------------------------------------------
    Write-Host "  * Extraindo o cabeçalho do arquivo (7 primeiras linhas)."
    Get-Content $TMP_FILE | Select-Object -Skip 7 | Set-Content -Encoding utf8 $CSV_FILE
    # ------------------------------------------------------------------------------------
    Write-Host "  * Excluindo arquivos temporarios."
    If ( Test-Path -Path $TMP_FILE ) { rm $TMP_FILE }
    # ------------------------------------------------------------------------------------
    return $CSV_FILE
    # ====================================================================================
}
 
Function sigrh2helios( $SIGRH_FILE, $HELIOS_FILE ) {
    # ====================================================================================
    $SIGRH_TMP_FILE = ".\arquivo_tmp_sigrh.csv"
    # ------------------------------------------------------------------------------------
    If ( !$SIGRH_FILE ) { $SIGRH_FILE = ".\servidores_sigrh.xlsx" }
    If ( !(Test-Path -Path $SIGRH_FILE) ) { Write-Host "ATENÇÃO: Arquivo de entrada não existente!"; break }
    # ------------------------------------------------------------------------------------
    If ( !$HELIOS_FILE ) { $HELIOS_FILE = ".\servidores_helios.csv" }
    # ------------------------------------------------------------------------------------
    Write-Host "Parametros configurados:"
    Write-Host "- Arquivo de entrada (SIGRH): $SIGRH_FILE"
    Write-Host "- Arquivo de saida (HELIOS).: $HELIOS_FILE"
    # ====================================================================================
    Write-Host "Iniciando Processamento:"
    # ------------------------------------------------------------------------------------
    Write-Host "- Excluindo arquivo de saida se já existente."
    If ( Test-Path -Path $HELIOS_FILE ) { rm $HELIOS_FILE }
    # ------------------------------------------------------------------------------------
    Write-Host "- Convertendo arquivo Excel para CSV."
    $SIGRH_TMP_FILE = excel2csv -FILE $SIGRH_FILE
    # ------------------------------------------------------------------------------------
    Write-Host "- Processando registros do arquivo entrada."
    $CONTA_REGISTRO = 0
    Import-Csv $SIGRH_TMP_FILE | ForEach-Object {
        $ID = $_.CPF -replace '[.-]', ''
        If ( $ID ) {
            If ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName ) {
                $USUARIO = ( Get-ADUser -Identity $ID -Properties SamAccountName,mail,displayName )
                $CPF  = $USUARIO.SamAccountName
                $MAIL = $USUARIO.mail
                $NOME = $USUARIO.displayName
                $CONTA_REGISTRO++
                Add-Content -Encoding ascii -Value "$CPF,$MAIL,$NOME" -Path $HELIOS_FILE
                Write-Progress -Activity "Escrevendo em $HELIOS_FILE" -Status "$CONTA_REGISTRO"
            }
        }
    }
    # ====================================================================================
    Write-Host "- Excluindo arquivos temporarios."
    If ( Test-Path -Path $SIGRH_TMP_FILE ) { rm $SIGRH_TMP_FILE }
    # ------------------------------------------------------------------------------------
    Write-Host "Processamento finalizado!"
    # ====================================================================================
}

Siga os seguintes passos para executar o script:

  1. Copie a função e cole diretamente no PowerShell, isto vai criar uma função na sessão no shell e você poderá executá-la múltiplas vezes apenas chamando: sigrh2helios na linha de comando.
  2. Como o Excel é utilizado para converter o arquivo é necessário tê-lo instalado na mesma máquina que está executando o script.
  3. Importante: o arquivo fornecido possuía 7 linhas iniciais que são informativas (do relatório) e são extraídas automaticamente na função de conversão do arquivo de Excel para CSV. Caso o arquivo fornecido tenha um cabeçalho diferente será necessário ajustar a função excel2csv.
  4. Execute a função passando os parâmetros conforme abaixo:
sigrh2helios 
# default: ARQUIVO_DE ENTRADA = .\servidores_sigrh.xlsx e ARQUIVO_DE_SAIDA = .\servidores_helios.csv

ou

sigrh2helios -SIGRH_FILE ARQUIVO_DE_ENTRADA
# default: ARQUIVO_DE_SAIDA = .\servidores_helios.csv

ou

sigrh2helios -SIGRH_FILE ARQUIVO_DE_ENTRADA -HELIOS_FILE  ARQUIVO_DE_SAIDA
  • Última modificação: 2024/04/03 17:43
  • por DOUGLAS PADILHA