Free Trial

Fórum

Código no Python do Alteryx não funciona

FábioCisco
Cometa

Bom dia, feras !!

Podem me ajudar com esse código no botão Python do Alteryx ? Já escrevi de várias maneiras o trecho onde declaro o range automático que quero, mas sempre dá o erro abaixo 

<class 'NameError'>



Trecho que inclui pra trazer range de data automaticamente...

a = Date
d = Format(a, "dd.mm.yyyy")
b = Date - Day(Date) + 1
c = Format(c, "dd.mm.yyyy")

...sem precisar digitar as datas no trecho:
session.findById("wnd[0]/usr/ctxtSO_DATA-LOW").text = c
session.findById("wnd[0]/usr/ctxtSO_DATA-HIGH").text = d

Abaixo, código completo do in:


import win32com.client, sys, subprocess, time

def saplogin():

try:

SapGuiAuto = win32com.client.GetObject('SAPGUI')
if not type(SapGuiAuto) == win32com.client.CDispatch:
return

application = SapGuiAuto.GetScriptingEngine
if not type(application) == win32com.client.CDispatch:
SapGuiAuto = None
return

connection = application.Children(0) #OpenConnection("JNP - SRM de Produção V04", True)
if not type(connection) == win32com.client.CDispatch:
application = None
SapGuiAuto = None
return

session = connection.Children(0)
if not type(session) == win32com.client.CDispatch:
connection = None
application = None
SapGuiAuto = None
return

a = Date
d = Format(a, "dd.mm.yyyy")
b = Date - Day(Date) + 1
c = Format(c, "dd.mm.yyyy")

session.findById("wnd[0]").maximize
session.findById("wnd[0]/tbar[0]/okcd").text = "YPFC_INDIC_TEMPO"
session.findById("wnd[0]").sendVKey(0)
session.findById("wnd[0]/usr/cmbP_PORTAL").key = " "
session.findById("wnd[0]/usr/cmbP_PORTAL").key = "2"
session.findById("wnd[0]/usr/ctxtSO_DATA-LOW").text = c
session.findById("wnd[0]/usr/ctxtSO_DATA-HIGH").text = d


OBRIGADO !!

1 RESPONDER 1
carlosteixeira
15 - Aurora
15 - Aurora

Bom dia @FábioCisco tudo bem?

 

Veja se esse código resolve:

 

O erro de NameError está ocorrendo principalmente porque a variável Date não foi definida. Além disso, Format e Day não são funções nativas do Python, então precisamos corrigi-las também. Aqui está uma versão corrigida do código, usando as bibliotecas do Python para manipular datas:

Correções:

  1. Substituí Date pela data atual obtida com datetime.date.today().
  2. Em vez de Format, utilizei o método strftime para formatar as datas.
  3. Day(Date) foi substituído pelo método replace para definir o dia como o primeiro do mês.

 

import win32com.client, sys, subprocess, time from datetime import datetime def saplogin(): try: SapGuiAuto = win32com.client.GetObject('SAPGUI') if not type(SapGuiAuto) == win32com.client.CDispatch: return application = SapGuiAuto.GetScriptingEngine if not type(application) == win32com.client.CDispatch: SapGuiAuto = None return connection = application.Children(0) # OpenConnection("JNP - SRM de Produção V04", True) if not type(connection) == win32com.client.CDispatch: application = None SapGuiAuto = None return session = connection.Children(0) if not type(session) == win32com.client.CDispatch: connection = None application = None SapGuiAuto = None return # Define a data atual e o primeiro dia do mês atual a = datetime.today() d = a.strftime("%d.%m.%Y") b = a.replace(day=1) c = b.strftime("%d.%m.%Y") session.findById("wnd[0]").maximize session.findById("wnd[0]/tbar[0]/okcd").text = "YPFC_INDIC_TEMPO" session.findById("wnd[0]").sendVKey(0) session.findById("wnd[0]/usr/cmbP_PORTAL").key = " " session.findById("wnd[0]/usr/cmbP_PORTAL").key = "2" session.findById("wnd[0]/usr/ctxtSO_DATA-LOW").text = c session.findById("wnd[0]/usr/ctxtSO_DATA-HIGH").text = d except Exception as e: print("Erro:", e)

 

 

Explicação:

  • datetime.today() captura a data atual.
  • a.strftime("%d.%m.%Y") formata a data atual como dd.mm.aaaa.
  • a.replace(day=1) ajusta a data para o primeiro dia do mês, e c = b.strftime("%d.%m.%Y") define o valor de c.
  •  

(BY CHATGPT)

 

Abraços

Carlos A Teixeira
Rótulos
Autores com maior número de soluções