рдореБрдЭреЗ рдПрдХ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдореБрдЭреЗ рд░реВрдЯ рдлрд╝реЛрд▓реНрдбрд░, рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рдХреЗ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░ рд╕реЗ Nth рддрдХ рд╕рднреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреБрди: рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдореИрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдЬрд╛ рд╕рдХрддрд╛ рд╣реВрдВ? рдХреНрдпрд╛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ? рд╕рд╛рде рд╣реА, рдореИрдВ рд░реВрдЯ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдХреЛ рдХреИрд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? @vgrem @Bachatero
рдПрдХ рд▓рд┐рдВрдХ рдорд┐рд▓рд╛, рдЬреЛ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рдХреНрд╡реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реЗ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рдВрд░рдЪрдирд╛ рдЯреНрд░реА рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдЗрд╕ рд▓рд┐рдВрдХ рдХрд╛ рдкрд╣рд▓рд╛ рдЙрддреНрддрд░: https://sharepoint.stackexchange.com/questions/159105/with-rest-recursively-retrieve-file-and-folder-directory-struct
рдореИрдВ рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдкрд░реЛрдХреНрдд рд▓рд┐рдВрдХ рд╕реЗ рдЗрд╕реЗ рджреЛрд╣рд░рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ: /_api/web/Lists/GetByTitle('Documents')/Items?$select=FileLeafRef,FileRef
рд▓реЗрдХрд┐рди рдЬрдм рдореИрдВ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рдЖрдЬрдорд╛рддрд╛ рд╣реВрдВ:
folder = ctx.web.lists.get_by_title('Documents')
folder = folder.get_items('$select=FileLeafRef,FileRef')
рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ: "'str' рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ 'рдкреЗрд▓реЛрдб'"
рдХреНрдпрд╛ рдХрд░реЗрдВ?
рдирдорд╕реНрддреЗ,
рдЖрдк рдХреЙрд▓рд┐рдВрдЧ рдкреНрд░реЛ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╕реНрд╡рдпрдВ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
рдбреАрдИрдПрдлрд╝ рдкреНрд░рд┐рдВрдЯрдСрд▓ рд╕рд╛рдордЧреНрд░реА (рд╕реАрдЯреАрдПрдХреНрд╕, рд░рд┐рд▓реЗрдЯрд┐рд╡ рдпреВрдЖрд░рдПрд▓):
try:
libraryRoot = ctx.web.get_folder_by_server_relative_url(relativeUrl)
ctx.load(libraryRoot)
ctx.execute_query()
folders = libraryRoot.folders
ctx.load(folders)
ctx.execute_query()
for myfolder in folders:
print("Folder name: {0}".format(myfolder.properties["ServerRelativeUrl"]))
printAllContents(ctx, relativeUrl + '/' + myfolder.properties["Name"])
files = libraryRoot.files
ctx.load(files)
ctx.execute_query()
for myfile in files:
#print("File name: {0}".format(myfile.properties["Name"]))
print("File name: {0}".format(myfile.properties["ServerRelativeUrl"]))
except:
print('Problem printing out list of folders')
sys.exit(1)
рдоред
... рдЖрдк рддрдм, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ServerRelativeUrl рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рд┐рдВрдЯ рдЖрдЙрдЯ рд╣реЛ рдЬрд╛рддреА рд╣реИ ...
рдореИрдВрдиреЗ рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯ рдХреА: рдЕрдзрд┐рдХ рд╕рдВрд░рдЪрд┐рдд рддрд░реАрдХреЗ рд╕реЗред
рдПрдлрд╡рд╛рдИрдЖрдИ: рдЬреЗрдПрд╕рдУрдПрди рд╕рд┐рд░реНрдл рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡/рд╕рдордЭрдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рд╣реИред
рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЬрд┐рд╕ рдЦрд░реАрдж рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реВрдЪреАрдмрджреНрдз рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдмрд╕ рдпрд╣реА рдХрд░рддрд╛ рд╣реИ ... рдЗрди рдлрд╝реЛрд▓реНрдбрд░реЛрдВ рдФрд░ рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдХреЗ рднреАрддрд░ рд╕рднреА рдлрд╝реЛрд▓реНрдбрд░реНрд╕/рд╕рдмрдлрд╝реЛрд▓реНрдбрд░реНрд╕ рдФрд░ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд░рд┐рдХрд░реНрд╕рд┐рд╡ рд░реВрдк рд╕реЗ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рддрд╛ рд╣реИ ...
рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рдЬреИрд╕реЗ рд╣реА рдЖрдк рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдкреБрдирд░рд╛рд╡рд░реНрддреА рд░реВрдк рд╕реЗ рдЬрд╛рддреЗ рд╣реИрдВ ...
outputDir = "d:\output"
def printAllContents(ctx, relativeUrl):
try:
libraryRoot = ctx.web.get_folder_by_server_relative_url(relativeUrl)
ctx.load(libraryRoot)
ctx.execute_query()
folders = libraryRoot.folders
ctx.load(folders)
ctx.execute_query()
for myfolder in folders:
#print("Folder name: {0}".format(myfolder.properties["Name"]))
print("Folder name: {0}".format(myfolder.properties["ServerRelativeUrl"]))
printAllContents(ctx, relativeUrl + '/' + myfolder.properties["Name"])
files = libraryRoot.files
ctx.load(files)
ctx.execute_query()
for myfile in files:
print("File name: {0}".format(myfile.properties["ServerRelativeUrl"]))
pathList = myfile.properties["ServerRelativeUrl"].split('/')
fileDest = outputDir + "/"+ pathList[-1]
downloadFile(ctx, fileDest, myfile.properties["ServerRelativeUrl"])
except:
print('Problem printing out list of folders')
sys.exit(1)
folder_list = []
def get_folder_relativeUrl(context, folder_relativeUrl):
libraryRoot = context.web.get_folder_by_server_relative_url(folder_relativeUrl)
folders = libraryRoot.folders
context.load(folders)
context.execute_query()
for cur_folder in folders:
folder_list.append(cur_folder.properties["ServerRelativeUrl"])
get_folder_relativeUrl(context, cur_folder.properties["ServerRelativeUrl"])
return folder_list
рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЛ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдкреИрд░реЗрдВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдПрдирдПрдЪ рдЙрдк рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ ..
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдзреАрдорд╛ рд╣реИред
рдЕрднрд┐рд╡рд╛рджрди,
рдЪреВрдВрдХрд┐ рдЗрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдореИрдВ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕ рддрд░рд╣ рдЖрдкрдХреЛ рдлреНрд▓реИрдЯ рд╕реВрдЪреА рдореЗрдВ рдкреИрд░реЗрдВрдЯ рдлрд╝реЛрд▓реНрдбрд░ рдФрд░ рдПрдирдПрдЪ рдЙрдк рдлрд╝реЛрд▓реНрдбрд░реНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВрдЧреЗ ..
рд╣рд╛рд▓рд╛рдБрдХрд┐, рдпрд╣ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдзреАрдорд╛ рд╣реИред