рдирдорд╕реНрдХрд╛рд░,
рдореИрдВ рдПрдХ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд▓реВрдк рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореБрдЭреЗ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рдХреБрдЫ рдЖрдЗрдЯрдо рдвреВрдВрдврдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЕрдм рддрдХ рдореИрдВ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реВрдВ рд▓реЗрдХрд┐рди рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рддрддреНрд╡ рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рдлрд╝реАрд▓реНрдб "рдирд╛рдо" рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗ рд░рд╣рд╛ рд╣реИред
рдЬрдм рдореИрдВ рддрддреНрд╡ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдЧреБрдг рд╢реВрдиреНрдп ({}) рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдирд╛рдо рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ file.dowload() рдореЗрдереЛрдЯ рдХреЛ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдореБрдЭреЗ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╡рд░реНрддрдорд╛рди рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ, рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрд▓реЛрдб рдХрд░рдирд╛ рдмрд╣реБрдд рдЕрд╕рдВрднрд╡ рд╣реИред
рдХреЛрдИ рд╕реБрдЭрд╛рд╡?
рдореИрдВ рдЬрд┐рд╕ рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рд╡рд╣ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ:
from office365.runtime.auth.ClientCredential import ClientCredential
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File
from office365.sharepoint.camlQuery import CamlQuery
ctx = ClientContext.connect_with_credentials(site_url, ClientCredential(client_id, client_secret))
lib = ctx.web.lists.get_by_title("XXX")
caml_query = CamlQuery()
caml_query.ViewXml = """XXX"""
items = lib.get_items(caml_query)
ctx.load(lib)
ctx.execute_query()
for item in items:
file = item.file
with open(download_path, "wb") as local_file:
file.download(local_file)
ctx.execute_query()
print("[Ok] file has been downloaded: {0}".format(download_path))
рдЕрдЧреНрд░рд┐рдо рдореЗрдВ рдзрдиреНрдпрд╡рд╛рдж!
рд╢реБрдн рдкреНрд░рднрд╛рдд,
рдореИрдВ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рдЖрдЗрдЯрдо рд╕реВрдЪреА рдХреЗ рдЕрдВрджрд░ iter рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИ, рдлрд┐рд░ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рдиреАрдЪреЗ рд╣реИ:
client_id = "XXX"
client_secret = "XXX"
site_url = "XXX"
download_folder = r'C:\Users\yourname\sharepoint'
from office365.runtime.auth.ClientCredential import ClientCredential
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File
from office365.sharepoint.camlQuery import CamlQuery
ctx = ClientContext.connect_with_credentials(site_url, ClientCredential(client_id, client_secret))
lib = ctx.web.lists.get_by_title("REO")
caml_query = CamlQuery()
caml_query.ViewXml = XXX
items = lib.get_items(caml_query)
ctx.load(items)
ctx.execute_query()
for item in items:
file = item.file
ctx.load(file)
ctx.execute_query()
file_name = "{0}".format(file.properties["Name"])
download_path = download_folder + '//' + file_name
with open(download_path, "wb") as local_file:
file.download(local_file)
ctx.execute_query()
print("[Ok] file has been downloaded: {0}".format(download_path))
@ pobs93 рдореИрдВ рд╢реЗрдпрд░рдкреЙрдЗрдВрдЯ рд╕реВрдЪреА рд╕реЗ рдЕрдЯреИрдЪрдореЗрдВрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореИрдВрдиреЗ рдЗрд╕ рдкрдВрдХреНрддрд┐ рдкрд░ рдпрд╣рд╛рдБ рдЯрд┐рдкреНрдкрдгреА рдХреА рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдЗрд╕ рдкрд░ рдХрд┐рди рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ:
caml_query.ViewXml = XXX
рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдХреЛрдб рдЪрд▓рд╛рддрд╛ рд╣реВрдВ рддреЛ рдореБрдЭреЗ рд▓рд╛рдЗрди ctx.execute_query()
рдкрд░ рдиреАрдЪреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓ рд░рд╣реА рд╣реИ
рд▓реЗрдЦрди рддреНрд░реБрдЯрд┐: рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ CamlQuery JSON рдХреНрд░рдордмрджреНрдз рдирд╣реАрдВ рд╣реИ
рдореИрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдирдпрд╛ рд╣реВрдВ рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рдЖрдк рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рдЯреА.рдХреЗ.рдПрд╕
@ pobs93 рдмрд╕ рдЙрд╕ рд╕реВрдЪреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдЕрдЯреИрдЪрдореЗрдВрдЯ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред
рдореЗрд░реЗ рдкрд╛рд╕ рдЬреЛ рд╕реВрдЪреА рд╣реИ рдЙрд╕рдореЗрдВ рд╕реЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╣реИрдВ рдФрд░ рдореБрдЭреЗ рдпрд╣рд╛рдБ рдЕрдиреБрд▓рдЧреНрдирдХ рдХрд╛ URL рдирд╣реАрдВ рджрд┐рдЦ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╡рд╣рд╛рдБ рд╣реИрдВ (рдЪрд┐рддреНрд░ рд╕рдВрд▓рдЧреНрди рджреЗрдЦреЗрдВ)ред
{'рдлрд╛рдЗрд▓рд╕рд┐рд╕реНрдЯрдордСрдмреНрдЬреЗрдХреНрдЯ рдЯрд╛рдЗрдк':-,
'рдкрд╣рдЪрд╛рди': -,
'ServerRedirectedEmbedUri': рдХреЛрдИ рдирд╣реАрдВ,
'ServerRedirectedEmbedUrl': '',
'ContentTypeId': -,
'рд╢реАрд░реНрд╖рдХ': -,
'ComplianceAssetId': рдХреЛрдИ рдирд╣реАрдВ,
'рдкрд╣рдЪрд╛рди': -,
'рд╕рдВрд╢реЛрдзрд┐рдд':-,
'рдмрдирд╛рдпрд╛ рдерд╛': -,
'рд▓реЗрдЦрдХ рдЖрдИрдбреА': 12,
'рд╕рдВрдкрд╛рджрдХ рдЖрдИрдбреА': 12,
'OData__UIVersionString': '1.0',
'рдЕрдиреБрд▓рдЧреНрдирдХ': рд╕рдЪ рд╣реИ,
'рдЧрд╛рдЗрдб': -}
рдирд┐рдореНрди рдЙрджрд╛рд╣рд░рдг рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╕реВрдЪреА рдЖрдЗрдЯрдо рдХреЗ рд▓рд┐рдП _file name_ рдФрд░ _file url_ рдХреИрд╕реЗ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
ctx = ClientContext(settings['url']).with_credentials(client_creds)
lib = ctx.web.lists.get_by_title("Documents")
items = lib.items
ctx.load(items, ["ID", "FileLeafRef", "FileRef"])
ctx.execute_query()
for item in items:
print(f"FileRef: {item.properties['FileRef']}")
рдХрд╣рд╛рдВ
FileLeafRef
- рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ ListItem рд╕реЗ рд╕рдВрдмрджреНрдз рдлрд╝рд╛рдЗрд▓ рдиреЛрдб рдХреЗ рд▓рд┐рдП рд╕рд░реНрд╡рд░-рд╕рдВрдмрдВрдзреА URL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ
FileRef
- рдЙрд╕ рдлрд╝реАрд▓реНрдб рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ ListItem . рдХреЗ рд╕рд░реНрд╡рд░-рд╕рд╛рдкреЗрдХреНрд╖ URL рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрддреА рд╣реИ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╢реБрдн рдкреНрд░рднрд╛рдд,
рдореИрдВ рдЕрдкрдиреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред
рдЖрдЗрдЯрдо рд╕реВрдЪреА рдХреЗ рдЕрдВрджрд░ iter рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рдВрджрд░реНрдн рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдирд╛рдо рд╢рд╛рдорд┐рд▓ рд╣реИ, рдлрд┐рд░ рдЖрдк рдлрд╝рд╛рдЗрд▓ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдореЗрд░рд╛ рдХреЛрдб рдиреАрдЪреЗ рд╣реИ: