Office365-rest-python-client: λ‚΄ SharePoint λͺ©λ‘μ— λŒ€ν•œ 정보에 μ•‘μ„ΈμŠ€ν•  수 μ—†μŠ΅λ‹ˆλ‹€. λͺ©λ‘ λ¦¬μ†ŒμŠ€ URL이 μ˜¬λ°”λ₯΄μ§€ μ•Šμ€ 것 κ°™μŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2020λ…„ 08μ›” 28일  Β·  5μ½”λ©˜νŠΈ  Β·  좜처: vgrem/Office365-REST-Python-Client

μ—¬κΈ° λ‚΄κ°€ μ‚¬μš©ν•˜λŠ” 것이 μžˆμŠ΅λ‹ˆλ‹€.

site_url = "https://mycompany.sharepoint.com/sites/mysite/"
clientid = "12345"
clientsecret = "67890"
clientcredentials = ClientCredential(clientid, clientsecret)
ctx = ClientContext(site_url).with_credentials(clientcredentials)
target_list = "ListIWant"
list_object = ctx.web.lists.get_by_title(target_list)
items = list_object.get_items()
ctx.load(items)
ctx.execute_query()

λͺ¨λ“  것이 였λ₯˜ 없이 μ‹€ν–‰λ˜μ§€λ§Œ κ²°κ΅­ λ‚΄ list_objectμ—λŠ” ν•­λͺ©μ΄λ‚˜ ν•„λ“œκ°€ μ—†μŠ΅λ‹ˆλ‹€... list_objectμ—μ„œ resource_url을 보면 μ˜¬λ°”λ₯Έ URL이 μ•„λ‹™λ‹ˆλ‹€. λͺ©λ‘ 이름 μ•žλ’€μ— μΆ”κ°€ λ°±μŠ¬λž˜μ‹œκ°€ μžˆμŠ΅λ‹ˆλ‹€. μŠ¬λž˜μ‹œλ₯Ό μ œκ±°ν•˜κ³  Edge μ£Όμ†Œ ν‘œμ‹œμ€„μ— λ³΅μ‚¬ν•˜λ©΄ λͺ©λ‘μ— λŒ€ν•œ 정보가 ν¬ν•¨λœ XML 파일이 λ‹€μš΄λ‘œλ“œλ˜μ§€λ§Œ κ·ΈλŒ€λ‘œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그것을 κ³ μΉ˜λŠ” 방법.

λ„ˆλ¬΄ μΉœν•΄μ§„ 것 κ°™μ•„μš”... 도와쀄 μ‚¬λžŒ μžˆλ‚˜μš”?
example

question

λͺ¨λ“  5 λŒ“κΈ€

거의 λ‹€ μ™”μŠ΅λ‹ˆλ‹€.
items κ°œμ²΄λŠ” ListItemCollection μœ ν˜•μž…λ‹ˆλ‹€.
len(items) λ₯Ό μ‹œλ„ν•˜λ©΄ μ»¬λ ‰μ…˜μ˜ ν•­λͺ© 수λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
이제 ν•΄λ‹Ή ν•­λͺ©μ„ μ—΄κ±°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

for item in items:
    print(item.properties)

각 ν•­λͺ©μ€ 이제 μ‘°μž‘ν•  수 μžˆλŠ” ListItem μœ ν˜•μž…λ‹ˆλ‹€.

λ˜ν•œ μΆ”κ°€ λ°±μŠ¬λž˜μ‹œλŠ” 파이썬 λ¬Έμžμ—΄μ—μ„œ ' λ₯Ό μ΄μŠ€μΌ€μ΄ν”„ν•˜κΈ° μœ„ν•œ κ²ƒμ΄λ―€λ‘œ μ™„μ „νžˆ μ •μƒμž…λ‹ˆλ‹€.

거의 λ‹€ μ™”μŠ΅λ‹ˆλ‹€.
items κ°œμ²΄λŠ” ListItemCollection μœ ν˜•μž…λ‹ˆλ‹€.
len(item) λ₯Ό μ‹œλ„ν•˜λ©΄ μ»¬λ ‰μ…˜μ˜ ν•­λͺ© 수λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
이제 ν•΄λ‹Ή ν•­λͺ©μ„ μ—΄κ±°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

for item in items:
    print(item.properties)

각 ν•­λͺ©μ€ 이제 μ‘°μž‘ν•  수 μžˆλŠ” ListItem μœ ν˜•μž…λ‹ˆλ‹€.

도움을 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ print(len(items))λŠ” 0을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

resource_url에 λ¬Έμ œκ°€ μ—†λ‹€λ©΄. SharePoint μ‚¬μ΄νŠΈμ— λŒ€ν•΄ μ„€μ •ν•œ μ•± κΆŒν•œμ— λ¬Έμ œκ°€ μžˆμ„ 수 μžˆμŠ΅λ‹ˆκΉŒ? https://docs.microsoft.com/en-us/sharepoint/dev/solution-guidance/security-apponly-azureacs (κΆŒν•œ μš”μ²­ XML μ„€μ • 포함)의 지침을 λ”°λžμ§€λ§Œ _layouts/15 /appinv.aspx νŽ˜μ΄μ§€μ—μ„œ λ‚΄ ν΄λΌμ΄μ–ΈνŠΈ IDλ₯Ό 보면 κΆŒν•œ μš”μ²­ XML ν•„λ“œκ°€ 항상 λΉ„μ–΄ μžˆμŠ΅λ‹ˆλ‹€... 처음 ν•΄λ³΄λŠ” μž‘μ—…μ΄λΌ μ œλŒ€λ‘œ μž‘λ™ν•˜λŠ”μ§€ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€.

xml에 λŒ€ν•΄ μ΄λŸ¬ν•œ 섀정을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€(그리고 λΆ„λͺ…νžˆ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹ λ’°ν•˜λ„λ‘ μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€).

   <AppPermissionRequests AllowAppOnlyPolicy="true">
   <AppPermissionRequest Scope="http://mycompany.sharepoint.com/sites/mysite" Right="FullControl" />
   </AppPermissionRequests>

이것은 docs.microsoft.comμ—μ„œ 찾은 지침과 μ•½κ°„ λ‹€λ₯΄μ§€λ§Œ ν…Œλ„ŒνŠΈκ°€ μ•„λ‹Œ λ‚΄ μ‚¬μ΄νŠΈμ— λŒ€ν•œ μ•‘μ„ΈμŠ€ κΆŒν•œλ§Œ λΆ€μ—¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 앱은 λ‚˜μ€‘μ— 'μ‚¬μ΄νŠΈ λͺ¨μŒ μ•± κΆŒν•œ'에 λ‚˜μ—΄λ˜λ―€λ‘œ μž‘λ™ν•˜λŠ” κ²ƒμœΌλ‘œ κ°€μ •ν•©λ‹ˆλ‹€... ν•˜μ§€λ§Œ appinv.aspx둜 λŒμ•„κ°ˆ λ•Œ xml κΆŒν•œμ΄ ν‘œμ‹œλ˜μ§€ μ•ŠλŠ”λ‹€λŠ” μ‚¬μ‹€μž…λ‹ˆλ‹€.

쒋은 μ§ˆλ¬Έμž…λ‹ˆλ‹€. 제 κΈ°μ–΅μœΌλ‘œλŠ” κΆŒν•œ 문제λ₯Ό λ‹€λ£° λ•Œ 맀우 λͺ…ν™•ν–ˆμŠ΅λ‹ˆλ‹€.
μ‹€μ œλ‘œ 승인된 앱은 _layouts/15/AppPrincipals.aspx
그리고 appinvμ—μ„œ xml이 보이지 μ•ŠλŠ” 것이 μ •μƒμž…λ‹ˆλ‹€.

λ‚΄ 기얡이 λ§žλ‹€λ©΄ λ‚΄κ°€ μ‚¬μš©ν•œ λ²”μœ„λŠ” http://sharepoint/site/sitecollection μ΄μ§€λ§Œ
(νŽΈμ§‘:) 치트 μ‹œνŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. https://medium.com/ng-sp/sharepoint-add-in-permission-xml-cheat-sheet-64b87d8d7600

우편 배달뢀λ₯Ό 톡해 API에 연결을 μ‹œλ„ ν–ˆμŠ΅λ‹ˆκΉŒ?

λ‹€μŒμ€ ν˜„μž¬ μ—°κ²°λ˜μ–΄ μžˆλŠ” ν†΅μ—­μ‚¬λ‘œλΆ€ν„° 얻은 μ •λ³΄μž…λ‹ˆλ‹€.

>>> items = ctx.web.lists.get_by_title('Events').items
>>> items
<office365.sharepoint.listitems.listItem_collection.ListItemCollection object at 0x10d064af0>
>>> len(items)
0
>>> ctx.load(items)
>>> ctx.execute_query()
>>> len(items)
2

인사말,

거의 λ‹€ μ™”μŠ΅λ‹ˆλ‹€.
items κ°œμ²΄λŠ” ListItemCollection μœ ν˜•μž…λ‹ˆλ‹€.
len(items) λ₯Ό μ‹œλ„ν•˜λ©΄ μ»¬λ ‰μ…˜μ˜ ν•­λͺ© 수λ₯Ό λ°˜ν™˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.
이제 ν•΄λ‹Ή ν•­λͺ©μ„ μ—΄κ±°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

for item in items:
    print(item.properties)

각 ν•­λͺ©μ€ 이제 μ‘°μž‘ν•  수 μžˆλŠ” ListItem μœ ν˜•μž…λ‹ˆλ‹€.

λ˜ν•œ μΆ”κ°€ λ°±μŠ¬λž˜μ‹œλŠ” 파이썬 λ¬Έμžμ—΄μ—μ„œ ' λ₯Ό μ΄μŠ€μΌ€μ΄ν”„ν•˜κΈ° μœ„ν•œ κ²ƒμ΄λ―€λ‘œ μ™„μ „νžˆ μ •μƒμž…λ‹ˆλ‹€.

λ™μ˜ν•˜κ³  μ‹€μ œλ‘œ μΆ”κ°€ λ°±μŠ¬λž˜μ‹œλŠ” OData URL을 유효 ν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•΄ μ•„ν¬μŠ€νŠΈλ‘œν”Ό 문자λ₯Ό μ΄μŠ€μΌ€μ΄ν”„ν•˜λŠ” 데 ν•„μˆ˜μž…λ‹ˆλ‹€.

이 μ˜κ²¬μ€ κ·Όλ³Έ 원인을 λ°νžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.

xml에 λŒ€ν•΄ μ΄λŸ¬ν•œ 섀정을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€(그리고 λΆ„λͺ…νžˆ μ‘μš© ν”„λ‘œκ·Έλž¨μ„ μ‹ λ’°ν•˜λ„λ‘ μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€).

   <AppPermissionRequests AllowAppOnlyPolicy="true">
   <AppPermissionRequest Scope="http://mycompany.sharepoint.com/sites/mysite" Right="FullControl" />
   </AppPermissionRequests>

이것은 docs.microsoft.comμ—μ„œ 찾은 지침과 μ•½κ°„ λ‹€λ₯΄μ§€λ§Œ ν…Œλ„ŒνŠΈκ°€ μ•„λ‹Œ λ‚΄ μ‚¬μ΄νŠΈμ— λŒ€ν•œ μ•‘μ„ΈμŠ€ κΆŒν•œλ§Œ λΆ€μ—¬ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 앱은 λ‚˜μ€‘μ— 'μ‚¬μ΄νŠΈ λͺ¨μŒ μ•± κΆŒν•œ'에 λ‚˜μ—΄λ˜λ―€λ‘œ μž‘λ™ν•˜λŠ” κ²ƒμœΌλ‘œ κ°€μ •ν•©λ‹ˆλ‹€... ν•˜μ§€λ§Œ appinv.aspx둜 λŒμ•„κ°ˆ λ•Œ xml κΆŒν•œμ΄ ν‘œμ‹œλ˜μ§€ μ•ŠλŠ”λ‹€λŠ” μ‚¬μ‹€μž…λ‹ˆλ‹€.

제곡된 λ²”μœ„κ°€ _invalid_ λ³΄μž…λ‹ˆλ‹€: http://mycompany.sharepoint.com/sites/mysite

  • mycompany : λŒ€μ‹  sharepoint 미리 μ •μ˜λœ 자리 ν‘œμ‹œμžμ—¬μ•Ό ν•©λ‹ˆλ‹€.
  • sites/mysite 동일, _valid_ 자리 ν‘œμ‹œμžμ—¬μ•Ό ν•©λ‹ˆλ‹€(예: content/sitecollection λ˜λŠ” content/sitecollection/web

λ”°λΌμ„œ μ†”λ£¨μ…˜μ€ _valid_ κΆŒν•œ μš”μ²­μ„ μ œκ³΅ν•˜μ—¬ μ•± κΆŒν•œ 을

μ‚¬μ΄νŠΈ λͺ¨μŒ λ‹Ή:

<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>

μ›Ή λ‹Ή :

<AppPermissionRequests AllowAppOnlyPolicy="true">
  <AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web" Right="FullControl" />
</AppPermissionRequests>

_κΆŒν•œ λ²”μœ„_ λͺ©λ‘μ€ μΆ”κ°€ κΈ°λŠ₯ κΆŒν•œμ—μ„œ 찾을 수 μžˆμŠ΅λ‹ˆλ‹€.

λ§ˆμ§€λ§‰μœΌλ‘œ μ•± λ³΄μ•ˆ 주체λ₯Ό μ„€μ •ν•˜κ³  κΆŒν•œμ„ λΆ€μ—¬ν•˜λŠ” 방법에 λŒ€ν•œ 단계별 지침도 μ œκ³΅ν•˜λŠ” μœ„ν‚€ νŽ˜μ΄μ§€ κ°€ μžˆμŠ΅λ‹ˆλ‹€.

κ°μ‚¬ν•©λ‹ˆλ‹€! 예. XML κΆŒν•œ λ²”μœ„κ°€ 문제의 κ·Όλ³Έ 원인인 것 κ°™μŠ΅λ‹ˆλ‹€!
초기 ν…ŒμŠ€νŠΈμ—μ„œ μ§€κΈˆμ€ μž‘λ™ν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

이것은 ν›Œλ₯­ν•©λ‹ˆλ‹€. μ €λŠ” μ§€λ‚œ 1λ…„ λ™μ•ˆ MS Accessμ—μ„œ VBA 슀크립트λ₯Ό μ‚¬μš©ν•˜μ—¬ SharePoint λͺ©λ‘μ„ μ—…λ°μ΄νŠΈν–ˆμŠ΅λ‹ˆλ‹€. 이 뢀뢄을 νŒŒμ•…ν•˜λ©΄ λͺ¨λ“  것을 Python으둜 μ΄μ‹ν•˜λŠ” 데 ν•œ 걸음 더 λ‹€κ°€κ°ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰