λ΄ Python 3 μ½λ:
office365.runtime.auth.authentication_context κ°μ Έμ€κΈ°μμ AuthenticationContext κ°μ Έμ€κΈ°
office365.sharepoint.client_contextμμ ClientContext κ°μ Έμ€κΈ°
URL = ' https://company.sharepoint.com/sites/abc '
ctx_auth = μΈμ¦ 컨ν
μ€νΈ(url=url)
ctx_auth.acquire_token_for_user(μ¬μ©μ μ΄λ¦='[email protected]', μνΈ='12345')μΈ κ²½μ°:
ctx = ClientContext(URL, ctx_auth)
λͺ©λ‘ = ctx.web.lists
ctx.load(λͺ©λ‘)
ctx.execute_query()
λͺ©λ‘μ l:
print(l.properties['μ λͺ©'])
μμ μ½λμμ μ¬μ΄νΈμ νλͺ©μ λμ΄ν μ μμ΅λλ€. νμ§λ§ λ΄ κ³νμ Pythonμ μ¬μ©νμ¬ AWS Lambdaμμ μ΄ μ 체 λͺ¨λμ μ€ννκ³ SharePoint λ¬Έμμμ λ€μ΄λ‘λνμ¬ AWS S3μ μ μ₯νλ κ²μ λλ€.
ν΄λμλ μ¬λ¬ νμΌμ΄ μμ μ μμ΅λλ€. λͺ¨λ νμΌμ΄ ν¬ν¨λ μ 체 ν΄λλ₯Ό λ€μ΄λ‘λνκ³ μΆμ΅λλ€. λꡬλ μ§ μ΄κ²μ νμ΅λκΉ? λμμ΄ λμ ¨λμ? μΉ μ€ν¬λνμ μ²μ μ νλ μ μκ² μμ μ½λλ ν° λμμ΄ λ κ²μ λλ€!
μλ
νμΈμ,
μλ§λ 루νμμ ν μ μμ΅λλ€. μ:
listTitle = "λ¬Έμ"
μ¬μ΄νΈ = "abc"
def fncPrintLibraryContents(ctx, listTitle):
try:
list_object = ctx.web.lists.get_by_title(listTitle)
folder = list_object.root_folder
ctx.load(folder)
ctx.execute_query()
files = folder.files
ctx.load(files)
ctx.execute_query()
return files
except:
print('Problem printing out library contents')
sys.exit(1)
def λ€μ΄λ‘λ νμΌ(ctx, νμΌ μ΄λ¦):
try:
with open(fileName, "wb") as localFile:
relativeUrl = '/sites/{0}/Shared%20Documents/{1}'.format(site, fileName)
response = File.open_binary(ctx, relativeUrl)
localFile.write(response.content)
localFile.close()
except:
print('Problem downloading file:', fileName)
sys.exit(1)
myfiles = fncPrintLibraryContents(ctx, listTitle)
myfileμ myfile:
print("νμΌ λ€μ΄λ‘λ: {0}".format(myfile.properties["μ΄λ¦"]))
λ€μ΄λ‘λ νμΌ(ctx,` myfile.properties["μ΄λ¦"])
λ―Έλμ.
pls, for 루νμμ λ§μ§λ§ λ μ€μ λ€μ¬μ°λ©΄ μ λλ κ² κ°μ΅λλ€.
λ―Έλμ.
μ΄λ΄,
λΉ λ₯Έ λ΅λ³ κ°μ¬ν©λλ€. μ£Όμ΄μ§ νμΌμ μ±κ³΅μ μΌλ‘ λ€μ΄λ‘λν μ μμ΅λλ€. νμΌ μ΄λ¦κΉμ§ μ 곡ν΄μΌ ν©λλ€. κ·Έλ¬λ λͺ¨λ νμΌμ μ¬κ·μ μΌλ‘ λ€μ΄λ‘λν μ μμΌλ €λ©΄ λ¨Όμ μ¬λ¬ μλ νμ μ°Ύμ μ μμ μ€λ₯κ° λ°μνλ νΉμ ν΄λμ λͺ¨λ κΈ°μ‘΄ νμΌμ λμ΄ν΄μΌ ν©λλ€. μ λͺ©μ λν λ΄ κ°λ μ΄ μ³μ§ μκΈ° λλ¬Έμ μ΄λκ°μμ μλͺ»λ κ²μΌ μ μμ΅λλ€. κ·Έλμ κ·Έ μ΄λ¦μ μ λͺ©μΌλ‘ μ§μ νμ¬ νμ ν΄λλ₯Ό λμ΄νλ €κ³ ν λλ§λ€ μ€ν¨ν©λλ€. λλ λΉμ μ μ½λλ₯Ό μ΄ν΄λ³΄κ³ κ·Έκ²μ ν μ μλμ§ νμΈν κ²μ λλ€.
ννΈ, νμ¬ μ€ν μ€μΈ μ½λ(λ€μ΄λ‘λκ° μ λλ‘ μλνκ³ λ£¨νΈμ λν ν΄λ λ° νμΌ λμ΄μ΄ μλνμ§λ§ Titleμμ Documents μ΄μΈμ νΉμ ν΄λ μ΄λ¦μ μ 곡ν λλ§λ€ μ€ν¨ν¨):
`office365.runtime.auth.authentication_context κ°μ Έμ€κΈ° AuthenticationContextμμ
office365.sharepoint.client_contextμμ ClientContext κ°μ Έμ€κΈ°
office365.sharepoint.fileμμ νμΌ κ°μ Έμ€κΈ°
office365.sharepoint.file_creation_informationμμ FileCreationInformation κ°μ Έμ€κΈ°
def read_folder_and_files(context, list_title):
"""ν΄λ μμ μ½κΈ°"""
list_obj = context.web.lists.get_by_title(list_title)
ν΄λ = list_obj.root_folder
context.load(ν΄λ)
context.execute_query()
print("λͺ©λ‘ URL: {0}".format(folder.properties["ServerRelativeUrl"]))
files = folder.files
context.load(files)
context.execute_query()
for cur_file in files:
print("File name: {0}".format(cur_file.properties["Name"]))
folders = context.web.folders
context.load(folders)
context.execute_query()
for folder in folders:
print("Folder name: {0}".format(folder.properties["Name"]))
def download_file(컨ν
μ€νΈ):
μλ΅ = File.open_binary(context, "/sites/new/Shared Documents/2011-A/file1.csv")
μΈμ(μλ΅)
μΈμ(μλ΅.λ΄μ©)
open(r"C:UsersaakashbDownloadstestfile1.csv", "wb")λ₯Ό local_fileλ‘ μ¬μ©:
local_file.write(response.content)
ctx = μμ
URL = ' https://company.sharepoint.com/sites/new '
ctx_auth = μΈμ¦ 컨ν
μ€νΈ(url=url)
ctx_auth.acquire_token_for_user(username='[email protected]', μνΈ='12345')μΈ κ²½μ°:
ctx = ClientContext(URL, ctx_auth)
read_folder_and_files(ctx, 'λ¬Έμ')
print('μ’ λ£ ν¨μ')`
1) λ΄κ° λΉμ μκ² μ€ λ΄ μ½λμ κΉ¨μ§ κ΅¬μ‘°μ λν΄ μ£μ‘ν©λλ€.
2) λ°©κΈ μ½λλ₯Ό μ€ννκ³ νμΈνμ΅λλ€. λͺ©λ‘ μΈ‘λ©΄μμ λ΄ μ½λκ° μννλ μμ
μ μ νν μννκ³ μμ΅λλ€. μ΄λ€ ν΄λλ μλ 루νΈμ μλ νμΌμ λμ΄ν©λλ€. νμ§λ§ ν΄λμ λν΄μλ λμΌν μμ
μ μννκ³ μΆμ΅λλ€.
3) ν΄λλ λμ΄νκ³ μΆμ΅λλ€. @vgrem μ ν΄λ λμ΄ μ½λλ₯Ό μ¬μ©νλ©΄ λ¬Έμμ ν΄λκ° νμλμ§ μκ³ λ€μκ³Ό κ°μ ν΄λκ° νμλ©λλ€.
ν΄λ μ΄λ¦: SitePages
ν΄λ μ΄λ¦: μ€νμΌ λΌμ΄λΈλ¬λ¦¬
ν΄λ μ΄λ¦: _catalogs
ν΄λ μ΄λ¦: FormServerTemplates
ν΄λ μ΄λ¦: _private
ν΄λ μ΄λ¦: λ§ν¬ 곡μ
ν΄λ μ΄λ¦: SiteAssets
ν΄λ μ΄λ¦: μ΄λ―Έμ§
ν΄λ μ΄λ¦: 곡μ λ¬Έμ
ν΄λ μ΄λ¦: λͺ©λ‘
ν΄λ μ΄λ¦: _cts
SharePoint Doc Libμ μλ ν΄λκ° μλλλ€.
κ°λ¨ν λ§ν΄μ Doc Lib ν΄λμ λ€μ΄λ‘λν ν΄λΉ νμΌμ λμ΄νλ €λ©΄ μ΄λ»κ² ν΄μΌ ν©λκΉ?
μλ
νμΈμ,
https://github.com/vgrem/Office365-REST-Python-Client/issues/91 μμ λ¬Έμ λ₯Ό μ΄ν΄λ³΄μμμ€.
νΉν λ€μκ³Ό κ°μ μ€μμ :
ν΄λ = ctx.web.get_folder_by_server_relative_url(app_settings['urlrel'])
λμμ΄ λμ§ μμΌλ©΄ λ€μ μ°λ½νμ¬ μμΈν λ΄μ©μ μλ € λλ¦¬κ² μ΅λλ€.
λ―Έλμ.
... λ΄κ° μλ―Ένλ κ²μ get_by_title λμ get_folder_by_server_relative_url λ©μλλ₯Ό μ¬μ©νλ κ²μ΄μμ΅λλ€. μλ₯Ό λ€μ΄
app_settings = {'urlrel': '/sites/abc/곡μ λ¬Έμ/TEST'}
def printFolderContents(ctx, listTitle):
try:
#list_object = ctx.web.lists.get_by_title(listTitle)
folder = ctx.web.get_folder_by_server_relative_url(app_settings['urlrel'])
#folder = list_object.root_folder
ctx.load(folder)
ctx.execute_query()
#print(folder.url)
files = folder.files
ctx.load(files)
ctx.execute_query()
for myfile in files:
print("File name: {0}".format(myfile.properties["Name"]))
except:
print('Problem printing out library contents')
sys.exit(1)
λμμ΄λλμ§ μλ €μ£ΌμΈμ ...
μλ₯Ό λ€μ΄ 곡μ λ¬Έμ λΌμ΄λΈλ¬λ¦¬ λ΄μ TEST ν΄λ μμ μλ νμΌμ λ€μ΄λ‘λνλ €λ©΄ μμ μ½λλ₯Ό λ³κ²½νμ¬ λ€μκ³Ό κ°μ κΈ°λ₯μ λ§λ€ μ μμ΅λλ€.
def fncGetFolderContents(ctx, listTitle):
try:
#list_object = ctx.web.lists.get_by_title(listTitle)
folder = ctx.web.get_folder_by_server_relative_url(app_settings['urlrel'])
#folder = list_object.root_folder
ctx.load(folder)
ctx.execute_query()
#print(folder.url)
files = folder.files
ctx.load(files)
ctx.execute_query()
#for myfile in files:
# print("File name: {0}".format(myfile.properties["Name"]))
return files
except:
print('Problem printing out library contents')
sys.exit(1)
λ€μ΄λ‘λ κΈ°λ₯μ μ½κ° λ³κ²½ν©λλ€. μ:
def downloadFolderFile(ctx, νμΌ μ΄λ¦):
try:
with open(fileName, "wb") as localFile:
relativeUrl = '/sites/{0}/Shared%20Documents/{1}/{2}'.format(site, yourFolder, fileName)
#relativeUrl = app_settings['urlrel']
response = File.open_binary(ctx, relativeUrl)
localFile.write(response.content)
localFile.close()
except:
print('Problem downloading file:', fileName)
sys.exit(1)
myfiles = fncGetFolderContents(ctx, listTitle)
myfileμ myfile:
print("νμΌ λ€μ΄λ‘λ: {0}".format(myfile.properties["μ΄λ¦"]))
downloadFolderFile(ctx, myfile.properties["μ΄λ¦"])
κ³ λ§μμ! λ λΆ λͺ¨λ λ΅λ³μ΄ μ λ§ λΉ λ₯΄μκ³ APIλ μ λ§ λλ¨νμλλ€!
μ΅λν 빨리 μ²λ¦¬νκ³ λ³΅μ νλ €κ³ ν©λλ€. κ·Έλ¬λ ν΄λλ₯Ό λμ΄νλ λ°©λ²μ΄ μμ΅λκΉ? λ΄ λ§μ, λΉμ μ΄ μ€ μ΅μ μ½λλ λ΄κ° ν΄λ μ΄λ¦μ μ λ μλν κ²μ λλ€. νλ‘μΈμ€λ₯Ό μλννκ³ μ ν΄λλ₯Ό λ§λ€κ³ νμΌμ 보κ΄νλ©΄ μ ν΄λμμλ μλνμ§ μκ² μ£ ? κ·Έλμ λ§μΌμ κ²½μ°μ λλΉν΄ ν΄λλ₯Ό λμ΄νκ³ μΆμμ΅λλ€. μ΄μ¨λ νμ¬ μ루μ μ λ΄ μ¬μ© μ¬λ‘μμ μλν΄μΌ ν©λλ€.
λ λΆκ» κΉμ κ°μ¬λ₯Ό λ립λλ€. μ€νμ μ€ννλ©΄ μ¬κΈ°μ μ λ°μ΄νΈνκ² μ΅λλ€.
μ μκ² κ°μ¬νμ§ λ§μΈμ. @vgrem μ΄ μ± μμ΄ μμ΅λλ€ :) ... κ·Έλ¦¬κ³ νμ€νμ§ μμ΅λλ€. μλ§λ κ°μ κ²μ λ¬μ±νλ λ€λ₯Έ λ°©λ²μ΄ μμ κ²μ λλ€ ....
곡μ λ¬Έμ λ¬Έμ λΌμ΄λΈλ¬λ¦¬ λ΄μ λͺ¨λ ν΄λλ₯Ό λμ΄νλ €λ©΄ λ€μμ μλν μ μμ΅λλ€.
list_object = ctx.web.lists.get_by_title(listTitle)
folder = list_object.root_folder
ctx.load(folder)
ctx.execute_query()
folders = folder.folders
ctx.load(folders)
ctx.execute_query()
for myfolder in folders:
print("File name: {0}".format(myfolder.properties["Name"]))
λ―Έλμ.
νμμ μ΄λ€. λ°λ³΅μ μΈ ν΄λ λ΄μ© μΈμ λ° λ€μ΄λ‘λκ° μλνμ΅λλ€!
κ°μ¬ν©λλ€,
μ΄ μ½λλ μμλ PDF νμΌμ λ€μ΄λ‘λν©λλ€. κ·Έλ€μ λΉμ΄ μμ΅λλ€ - 156 λ°μ΄νΈ. μ΄μ κ° μλμ?
μμ cosdeλ₯Ό μ¬μ©νμ¬ νμΌ μ΄λ¦μ΄ 1kbμΈ μμλ pdf νμΌλ μ»κ³ μμ΅λλ€. μ΄λ€ μμ΄λμ΄λΌλ?
μμ μ½λλ₯Ό μ¬μ©νμ¬ νμΌ μ΄λ¦μ΄ 1kbμΈ μμλ pdf νμΌλ μ»κ³ μμ΅λλ€. μ΄λ€ μμ΄λμ΄λΌλ?
λλ κ·Έκ²μ μμ λκ³ κ·Έ μ΄μ λ μλ URLμ΄μμ΅λλ€. ν΄λ λ΄μ©μ λμ΄ν΄μΌ ν λ /sites/sitename/library λ±μ μΆκ°ν νμκ° μμΌλ©° /libraryλ§ μμΌλ©΄ λ©λλ€. κ·Έλ¬λ μ΄λ―Έ νμΌμ λ€μ΄λ‘λν λ /sites/sitename/folder/file.xmlμ μΆκ°ν΄μΌ ν©λλ€.
/sites/sitename/μ μΆκ°νμ§ μκ³ λ μ¬μ ν νμΌμ μ‘μΈμ€νκ³ λ€μ΄λ‘λν μ μμ§λ§ μ½ν μΈ κ° μμλκΈ° λλ¬Έμ μ΄κ²μ μ λ§ μ΄μν©λλ€. λμμ ν΄λ λ΄μ©μ κ°μ Έμ¬ λ /sites/sitename/μ μΆκ°νλ©΄ μ€λ₯κ° λ°μνκ³ λΌμ΄λΈλ¬λ¦¬μμ μλ URLμ μμνλ κ²½μ°μλ§ μλν©λλ€.
λͺ¨λ λ¨μΌ 리μμ€κ° ν΄λ μ½ν μΈ μ νμΌ μ½ν μΈ λͺ¨λμ λν μλ URLμ /sites/sitenameμ μΆκ°νλλ‘ μ μνλ κ²μ΄ μ΄μν©λλ€.
μ μν΄ μ£Όμ μ κ°μ¬ν©λλ€. μ΅μ’ μμ μ½λλ₯Ό 곡μ ν μ μμ΅λκΉ? /sites/sitename/Documents/somefolderμ κ°μ νμ ν΄λμ λͺ¨λ λ΄μ©μ λ€μ΄λ‘λνλ €λ©΄ μ΅μ’ μ½λλ 무μμ λκΉ?
κ³ λ§μ μλ€μ. μ΄λ Sharepoint ν¨ν€μ§λ₯Ό μ¬μ©νλ λμ μ§λ©΄ν λ§μ λ¬Έμ μ λ¬Έμ λ₯Ό ν΄κ²°νλ λ° λμμ΄ λ©λλ€.
κ°μ₯ μ μ©ν λκΈ
μ μκ² κ°μ¬νμ§ λ§μΈμ. @vgrem μ΄ μ± μμ΄ μμ΅λλ€ :) ... κ·Έλ¦¬κ³ νμ€νμ§ μμ΅λλ€. μλ§λ κ°μ κ²μ λ¬μ±νλ λ€λ₯Έ λ°©λ²μ΄ μμ κ²μ λλ€ ....
곡μ λ¬Έμ λ¬Έμ λΌμ΄λΈλ¬λ¦¬ λ΄μ λͺ¨λ ν΄λλ₯Ό λμ΄νλ €λ©΄ λ€μμ μλν μ μμ΅λλ€.
λ―Έλμ.