无法使用Python通过MS Graph API访问Todo任务中的自定义列值

2024-04-28 19:25:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经在Outlook中创建了自定义列“船舶名称”、“航次号”、“ETD”和“截止日期”,以执行下图所示的任务

Outlook tasks snapshot

我需要通过MS Graph API访问这些列中的值,但到目前为止运气不好

不确定我是否朝着正确的方向前进,但我已经在我的任务中添加了一个名为“ZZZ”的openTypeExtension作为测试。我可以通过“GET”方法检索它,但无法在Outlook中的任何位置找到它,希望在自定义列或其他任务字段中找到它

以下是Python代码:

# In[1]:

import json
import requests

# In[2]:

token = json.load(open('ms_graph_state.jsonc'))["access_token"]
header = {'Authorization':'Bearer '+token}
header1 = {'Authorization':'Bearer '+token,'Content-Type':'application/json'}
base_url = 'https://graph.microsoft.com/v1.0/me/'

# In[3]:

task_list_id = requests.get(base_url+'todo/lists/',headers=header).json()['value'][1]['id']
task_list = base_url+'todo/lists/'+task_list_id
task_id = requests.get(task_list+'/tasks/',headers=header).json()['value'][0]['id']

# In[4]:

payload = {"@odata.type" : "microsoft.graph.openTypeExtension","extensionName" : "ZZZ","xxx" : "yyy"}

# In[5]:

create_oe = requests.post(task_list+'/tasks/'+task_id+'/extensions',headers=header1,json=payload).json()

# In[6]:

oe = requests.get(task_list+'/tasks/'+task_id+'/extensions/ZZZ',headers=header1).json()
oe

'''
Output:

{'@odata.context': "https://graph.microsoft.com/v1.0/$metadata#users('to-do-app%40outlook.co.nz')/todo/lists('AQMkADAwATZiZmYAZC0xNDM3LTZlYmMtMDACLTAwCgAuAAADtVcV-o2b90KtdxZu_nQLmgEA2HIj8QQFbES8Q4ESBpmcmgAAAgESAAAA')/tasks('AQMkADAwATZiZmYAZC0xNDM3LTZlYmMtMDACLTAwCgBGAAADtVcV-o2b90KtdxZu_nQLmgcA2HIj8QQFbES8Q4ESBpmcmgAAAgESAAAA2HIj8QQFbES8Q4ESBpmcmgAAAUeYHQAAAA%3D%3D')/extensions/$entity",
 'extensionName': 'ZZZ',
 'id': 'microsoft.graph.openTypeExtension.ZZZ',
 'xxx': 'yyy'}

'''

# In[7]:

task = requests.get(task_list+'/tasks/'+task_id,headers=header).json()
task

'''
Output:

{'@odata.context': "https://graph.microsoft.com/v1.0/$metadata#users('to-do-app%40outlook.co.nz')/todo/lists('AQMkADAwATZiZmYAZC0xNDM3LTZlYmMtMDACLTAwCgAuAAADtVcV-o2b90KtdxZu_nQLmgEA2HIj8QQFbES8Q4ESBpmcmgAAAgESAAAA')/tasks/$entity",
 '@odata.etag': 'W/"2HIj8QQFbES8Q4ESBpmcmgAAAa4dUQ=="',
 'importance': 'normal',
 'isReminderOn': False,
 'status': 'notStarted',
 'title': 'test-to-do-task',
 'createdDateTime': '2021-08-14T20:14:22.5557165Z',
 'lastModifiedDateTime': '2021-08-17T06:46:46.260686Z',
 'id': 'AQMkADAwATZiZmYAZC0xNDM3LTZlYmMtMDACLTAwCgBGAAADtVcV-o2b90KtdxZu_nQLmgcA2HIj8QQFbES8Q4ESBpmcmgAAAgESAAAA2HIj8QQFbES8Q4ESBpmcmgAAAUeYHQAAAA==',
 'body': {'content': '\r\n\r\n', 'contentType': 'text'}}

'''

谢谢你在这方面的帮助

多谢各位


Tags: intokenidjsontaskgetrequeststodo
1条回答
网友
1楼 · 发布于 2024-04-28 19:25:48

抱歉,这目前不受支持。可以这样说,考虑为特定场景编写文件{{a1},这样它可以被考虑用于将来的实现。

相关问题 更多 >