Office365-rest-python-client: 폴더 및 ν•˜μœ„ ν΄λ”μ—μ„œ λͺ¨λ“  SharePoint λ¬Έμ„œ νŒŒμΌμ„ μž¬κ·€ 적으둜 λ‹€μš΄λ‘œλ“œν•˜λŠ” 방법은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

에 λ§Œλ“  2019λ…„ 04μ›” 02일  Β·  9μ½”λ©˜νŠΈ  Β·  좜처: vgrem/Office365-REST-Python-Client

루트 폴더, ν•˜μœ„ 폴더 및 ν•˜μœ„ ν΄λ”μ˜ ν•˜μœ„μ—μ„œ Nth둜 λͺ¨λ“  νŒŒμΌμ„ μž¬κ·€ 적으둜 λ‹€μš΄λ‘œλ“œν•΄μ•Όν•˜λŠ” μš”κ΅¬ 사항이 μžˆμŠ΅λ‹ˆλ‹€.

μ–΄λ–»κ²Œν•΄μ•Όν•©λ‹ˆκΉŒ? νŠΉμ • ν΄λ”μ˜ 폴더λ₯Ό λ‚˜μ—΄ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ? λ˜ν•œ 루트 λ¬Έμ„œ 라이브러리의 폴더λ₯Ό μ–΄λ–»κ²Œ λ‚˜μ—΄ ν•  수 μžˆμŠ΅λ‹ˆκΉŒ? νŠΈμœ— λ‹΄μ•„ κ°€κΈ°

question

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

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 번째 ν•˜μœ„ 폴더가 포함 된 ν”Œλž« λͺ©λ‘μ΄ μ œκ³΅λ©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 이것은 μ„±λŠ₯λ©΄μ—μ„œ 더 λŠλ¦½λ‹ˆλ‹€.

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

쿼리λ₯Ό μ‚¬μš©ν•˜μ—¬ 전체 폴더 및 파일 ꡬ쑰 트리λ₯Ό κ²€μƒ‰ν•œλ‹€λŠ” 링크가 μžˆμŠ΅λ‹ˆλ‹€.

이 링크의 첫 번째 λ‹΅λ³€ : 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 번째 ν•˜μœ„ 폴더가 포함 된 ν”Œλž« λͺ©λ‘μ΄ μ œκ³΅λ©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ 이것은 μ„±λŠ₯λ©΄μ—μ„œ 더 λŠλ¦½λ‹ˆλ‹€.

인사말,

이 μ§ˆλ¬Έμ— λŒ€ν•œ 닡변이 μ™„λ£Œλ˜μ—ˆμœΌλ―€λ‘œ μ’…λ£Œλ₯Ό μ œμ•ˆν•©λ‹ˆλ‹€.

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