Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π·Π°Π³ΡΡΠΆΠ°Ρ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠΈ, ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ Π² Nth.
ΠΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ? ΠΡΡΡ Π»ΠΈ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅? ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΠΏΠ°ΠΏΠΊΠΈ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²? @vgrem @Bachatero
ΠΠΎΠ»ΡΡΠΈΠ» ΡΡΡΠ»ΠΊΡ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ Π³ΠΎΠ²ΠΎΡΠΈΡΡΡ, ΡΡΠΎ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ°ΠΏΠΎΠΊ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π·Π°ΠΏΡΠΎΡΠ°.
ΠΠ΅ΡΠ²ΡΠΉ ΠΎΡΠ²Π΅Ρ ΡΡΠΎΠΉ ΡΡΡΠ»ΠΊΠΈ: https://sharepoint.stackexchange.com/questions/159105/with-rest-recursively-retrieve-file-and-folder-directory-structure
Π― ΠΏΡΡΠ°ΡΡΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ ΡΡΠΎ ΠΈΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²ΡΡΠ΅ ΡΡΡΠ»ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π°Ρ api: / _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' Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π°ΡΡΠΈΠ±ΡΡΠ° 'payload'Β»
Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ?
ΠΡΠΈΠ²Π΅Ρ,
Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π²ΡΠ·ΠΎΠ²Π° proc, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΠ΅Π±Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
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["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, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π½ ...
Π― ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΠ» ΡΠ²ΠΎΠΉ Π·Π°ΠΏΡΠΎΡ Π·Π΄Π΅ΡΡ : Π±ΠΎΠ»Π΅Π΅ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
Π Π²Π°ΡΠ΅ΠΌΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ: JSON ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ / ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΡ.
Π― Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΊ ΡΠ΅ΠΌΡ Π²Ρ ΠΊΠ»ΠΎΠ½ΠΈΡΠ΅. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΠΊΠΎΡΠΎΡΡΡ Ρ ΠΏΡΠΈΠ²Π΅Π» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΈΠΌΠ΅ΡΠ°, ΠΏΡΠΎΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΡΡΠΎ ... ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅Ρ Π²ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ / ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ ΠΈ ΡΠ°ΠΉΠ»Ρ Π² ΡΡΠΈΡ ΠΏΠ°ΠΏΠΊΠ°Ρ ΠΈ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠ°Ρ ...
ΠΡΠΈΠΌΠ΅Ρ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΡΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΠΌ ΡΠΏΡΡΠΊΠ΅ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ ...
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
ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΈ N ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΎΠΊ ..
ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ΠΡΠΈΠ²Π΅Ρ,
ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π½Π° ΡΡΠΎΡ Π²ΠΎΠΏΡΠΎΡ Π±ΡΠ» Π΄Π°Π½ ΠΎΡΠ²Π΅Ρ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ Π·Π°ΠΊΡΡΡΡ Π΅Π³ΠΎ
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ ΠΏΠ»ΠΎΡΠΊΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΡΠΊΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΈ N ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΎΠΊ ..
ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.