λ£¨νΈ ν΄λ, νμ ν΄λ λ° νμ ν΄λμ νμμμ Nthλ‘ λͺ¨λ νμΌμ μ¬κ· μ μΌλ‘ λ€μ΄λ‘λν΄μΌνλ μꡬ μ¬νμ΄ μμ΅λλ€.
μ΄λ»κ²ν΄μΌν©λκΉ? νΉμ ν΄λμ ν΄λλ₯Ό λμ΄νλ λ°©λ²μ΄ μμ΅λκΉ? λν λ£¨νΈ λ¬Έμ λΌμ΄λΈλ¬λ¦¬μ ν΄λλ₯Ό μ΄λ»κ² λμ΄ ν μ μμ΅λκΉ? νΈμ λ΄μ κ°κΈ°
쿼리λ₯Ό μ¬μ©νμ¬ μ 체 ν΄λ λ° νμΌ κ΅¬μ‘° νΈλ¦¬λ₯Ό κ²μνλ€λ λ§ν¬κ° μμ΅λλ€.
μ΄ λ§ν¬μ 첫 λ²μ§Έ λ΅λ³ : 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μ λ¨μ§ νν / μ΄ν΄ λͺ©μ μμν κ²μ λλ€.
λλ λΉμ μ΄ λ¬΄μμ μ»κ³ μλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. λλ λ΄κ° μμ λ₯Ό λμ΄ν procμ΄ κ·Έλ κ²νλ€κ³ μκ°ν©λλ€ ...μ΄ ν΄λ λ° νμ ν΄λ λ΄μ λͺ¨λ ν΄λ / νμ ν΄λ λ° νμΌμ λ°λ³΅μ μΌλ‘ λμ΄ν©λλ€ ...
μ¬κ· μ μΌλ‘ νΈλ¦¬λ₯Ό λ΄λ €κ° λ νμΌμ λ€μ΄λ‘λνλ μ ...
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 λ²μ§Έ νμ ν΄λκ° ν¬ν¨ λ νλ« λͺ©λ‘μ΄ μ 곡λ©λλ€.
κ·Έλ¬λ μ΄κ²μ μ±λ₯λ©΄μμ λ λ립λλ€.