'Nonetype' objekt není subscriptable - Z rozhraní API aplikace outlook extrakce

0

Otázka

Mám nějaký kód, který se připojuje přímo do aplikace outlook a extrahuje metadata z e-mailové schránky, pak je v souladu do pandy. Nicméně, jsem se zdají být stále chybu, které jsem se doposud nesetkali, a mám podezření, že to má co do činění s špatné údaje v aplikaci outlook extrakce (tj. prázdné údaje na e-mail). Ale nemůžu izolovat. Viděl někdo tohle?

ERROR:app:Exception on /ctplive [GET]
Traceback (most recent call last):
  File "c:\programdata\anaconda\lib\site-packages\flask\app.py", line 2447, in wsgi_app
    response = self.full_dispatch_request()
  File "c:\programdata\anaconda\lib\site-packages\flask\app.py", line 1952, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "c:\programdata\anaconda\lib\site-packages\flask_cors\extension.py", line 165, in wrapped_function
    return cors_after_request(app.make_response(f(*args, **kwargs)))
  File "c:\programdata\anaconda\lib\site-packages\flask\app.py", line 1821, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "c:\programdata\anaconda\lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "c:\programdata\anaconda\lib\site-packages\flask\app.py", line 1950, in full_dispatch_request
    rv = self.dispatch_request()
  File "c:\programdata\anaconda\lib\site-packages\flask\app.py", line 1936, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\ADM\Code Projects\web_data_connector\outlook_api\app.py", line 100, in mailbox_insights
    inbox['Conversation Length'] = determine_conversation_length(inbox['ConversationIndex'], archive['ConversationIndex']).astype(int).values
  File "c:\users\adm\code projects\ccf_email_automation\ccf_email_automation\insights.py", line 92, in determine_conversation_length
    res[index] = len([x[:len(index)] for x in list(inbox_index) + list(archive_index) if x[:len(index)] == index])
  File "c:\users\adm\code projects\ccf_email_automation\ccf_email_automation\insights.py", line 92, in <listcomp>
    res[index] = len([x[:len(index)] for x in list(inbox_index) + list(archive_index) if x[:len(index)] == index])
TypeError: 'NoneType' object is not subscriptable

Tady je blok z app.py

    if mailbox not in ['ctp', 'csu', 'dmt']:
        return 404
    archive, inbox = get_emails(mailbox, get_outlook())
    inbox['Sender'] = inbox[['SenderName', 'SenderEmailAddress']].apply(lambda x: read_email_address(*x), axis=1)
    inbox['Sender Domain'] = inbox['SenderEmailAddress'].apply(lambda x: x[x.index('@') + 1:] if '@' in x else 'gilead.com')
    inbox['TABL_Highest Volume Senders'] = top_senders(inbox)
    inbox['TABL_Highest Volume Sender Domains'] = top_sender_domains(inbox)
    *************line 100 starts here**************
    inbox['Conversation Length'] = determine_conversation_length(inbox['ConversationIndex'], archive['ConversationIndex']).astype(int).values
    inbox['TABL_Longest Conversations'] = longest_conversations(inbox['Conversation Length'])
    holiday_list = get_holidays()
    inbox['Business Day SLA'] = inbox[['Received Date', 'Flag Completed Date']].apply(lambda x: calculate_sla(*x, holiday_list=holiday_list), axis=1)
    inbox['Team Member'] = hardcode_team_member(inbox, mailbox)
    inbox['Sentiment Score'] = determine_sentiment(inbox['Body'])
    inbox['Flag Status'] = inbox[['Flag Completed Date', 'FlagRequest']].apply(lambda x: flag_status(*x), axis=1)
    inbox['Complexity'] = inbox['Categories'].str.extract(r'Complexity Level (\d)').astype(float)
    inbox['Protocol'] = inbox.pipe(identify_first_protocol)
    inbox['Speed to Market'] = inbox['Categories'].str.contains('Speed to Market')
    return inbox.rename(columns=lambda x: x.replace(' ', '_')).drop(columns=['ConversationIndex']).to_json(), 200

Tady je blok z insights.py:

    res = pd.Series(index=inbox_index, dtype='object')
    for index in tqdm(inbox_index):
    *******Line 92 starts here********
        res[index] = len([x[:len(index)] for x in list(inbox_index) + list(archive_index) if x[:len(index)] == index])
    return res
anaconda outlook-restapi python
2021-11-23 16:28:15
1

Nejlepší odpověď

0

Obvykle, při práci s Api je doporučeno používat if statements protože si nemusí být jistý, co může být vrácena. Možná můžete zkusit zkontrolovat, jaký typ inbox a res je, takže váš kód může vypadat například takto:

Pro insights.py

res = pd.Series(index=inbox_index, dtype='object')
if res: # Check if res actually has a value before subscribing to it with res[key]
    for index in tqdm(inbox_index):
    *******Line 92 starts here********
        res[index] = len([x[:len(index)] for x in list(inbox_index) + list(archive_index) if x[:len(index)] == index])
        return res

Pak můžete také udělat to samé s pro app.py před použitím inbox variabilní, nebo jen použít spoustu if statements kontrola před vstupem datového bodu pak manipulace chybu, pokud něco je typ NoneType.

2021-11-23 16:52:58

hmmm, když jsem to vrátí celé df jako null, takže si nemyslím, že je to posuzování podle které, pokud. Já dodávám, že tento problém začal před pár dny a pracoval pro docela nějaký čas. Takže mám podezření, že to je pouze jedna hodnota v datovém souboru, ale nemůžu přijít na to, jak izolovat
Mike Mann

Vypadá to, že vám nějaký směr na váš problém, na leasing máte nápad, kde může být problém.
Libby Lebyane

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................