In case you missed the announcement: Alteryx One is here, and so is the Spring Release! Learn more about these new and exciting releases here!

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