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 !!
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:
Date
pela data atual obtida com datetime.date.today()
.Format
, utilizei o método strftime
para formatar as datas.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)
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
Usuário | Contagem |
---|---|
2 | |
1 |