ΠΠΎΠΉ ΠΊΠΎΠ΄ Python 3:
ΠΈΠ· office365.runtime.auth.authentication_context ΠΈΠΌΠΏΠΎΡΡ AuthenticationContext
ΠΈΠ· office365.sharepoint.client_context ΠΈΠΌΠΏΠΎΡΡ ClientContext
url = ' https://company.sharepoint.com/sites/abc '
ctx_auth = AuthenticationContext (url = url)
Π΅ΡΠ»ΠΈ ctx_auth.acquire_token_for_user (username='[email protected] ', password =' ββ12345 '):
ctx = ClientContext (url, ctx_auth)
ΡΠΏΠΈΡΠΊΠΈ = ctx.web.lists
ctx.load (ΡΠΏΠΈΡΠΊΠΈ)
ctx.execute_query ()
Π΄Π»Ρ l Π² ΡΠΏΠΈΡΠΊΠ°Ρ
:
print (l.properties ['ΠΠ°Π·Π²Π°Π½ΠΈΠ΅'])
ΠΠ· ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΡΠ΅ ΠΊΠΎΠ΄Π° Ρ ΠΌΠΎΠ³Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π½Π° ΡΠ°ΠΉΡΠ΅. ΠΠΎ Ρ ΠΏΠ»Π°Π½ΠΈΡΡΡ Π·Π°ΠΏΡΡΡΠΈΡΡ Π²Π΅ΡΡ ΡΡΠΎΡ ΠΌΠΎΠ΄ΡΠ»Ρ Π² AWS Lambda Ρ ΠΏΠΎΠΌΠΎΡΡΡ Python, Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² SharePoint ΠΈ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π² AWS S3.
Π ΠΏΠ°ΠΏΠΊΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΉΠ»ΠΎΠ². Π― Ρ ΠΎΡΡ ΡΠΊΠ°ΡΠ°ΡΡ Π²ΡΡ ΠΏΠ°ΠΏΠΊΡ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ. ΠΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°Π»? ΠΡΠ±Π°Ρ ΠΏΠΎΠΌΠΎΡΡ? Π Π°Π±ΠΎΡΠΈΠΉ ΠΊΠΎΠ΄ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΏΠΎΠ΄ΡΠΏΠΎΡΡΠ΅ΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Ρ Π½ΠΎΠ²ΠΈΡΠΎΠΊ Π² ΠΏΠ°ΡΡΠΈΠ½Π³Π΅ Π²Π΅Π±-ΡΠ°ΠΉΡΠΎΠ²!
ΠΡΠΈΠ²Π΅Ρ,
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Ρ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠΎ Π² ΡΠΈΠΊΠ»Π΅, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ:
listTitle = "ΠΠΎΠΊΡΠΌΠ΅Π½ΡΡ"
site = "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 downloadFile (ctx, fileName):
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 Π² myfiles:
print ("ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π°: {0}". ΡΠΎΡΠΌΠ°Ρ (myfile.properties ["ΠΠΌΡ"]))
downloadFile (ctx, `myfile.properties [" ΠΠΌΡ "])
ΠΌ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΡΠ΄Π΅Π»Π°ΠΉΡΠ΅ ΠΎΡΡΡΡΠΏ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ
Π΄Π²ΡΡ
ΡΡΡΠΎΠΊΠ°Ρ
ΡΠΈΠΊΠ»Π° for, Ρ Π½Π΅ ΠΌΠΎΠ³Ρ ΡΡΠΎΠ³ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΌ.
ΠΡΠΈΠ²Π΅Ρ,
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΡΠ°ΠΊΠΎΠΉ Π±ΡΡΡΡΡΠΉ ΠΎΡΠ²Π΅Ρ. Π― ΠΌΠΎΠ³Ρ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ, ΡΡΠΈΡΡΠ²Π°Ρ, ΡΡΠΎ Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΊΠ°Π·Π°ΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°. ΠΠΎ, ΡΡΠΎΠ±Ρ ΠΈΠΌΠ΅ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π²ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΏΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΡΠ»Π΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΠΏΡΡΠΎΠΊ Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ Not Found. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ Π³Π΄Π΅-ΡΠΎ ΠΎΡΠΈΠ±Π°ΡΡΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΌΠΎΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π½Π΅Π²Π΅ΡΠ½Π°, ΠΏΠΎΡΡΠΎΠΌΡ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Ρ ΠΏΡΡΠ°ΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΡ, ΡΠΊΠ°Π·Π°Π² ΡΡΠΎ ΠΈΠΌΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ°, Ρ ΡΠ΅ΡΠΏΠ»Ρ Π½Π΅ΡΠ΄Π°ΡΡ. Π― ΠΏΡΠΎΡΠΌΠΎΡΡΡ Π²Π°Ρ ΠΊΠΎΠ΄ ΠΈ ΠΏΠΎΡΠΌΠΎΡΡΡ, ΡΠΌΠΎΠ³Ρ Π»ΠΈ Ρ ΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ.
ΠΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌ, ΠΌΠΎΠΉ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΠΉ ΠΊΠΎΠ΄ (Π·Π°Π³ΡΡΠ·ΠΊΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΠΏΠΎΠΊ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ root ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, Π½ΠΎ Π²ΡΡΠΊΠΈΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Ρ Π΄Π°Ρ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΈΠΌΡ ΠΏΠ°ΠΏΠΊΠΈ, ΠΊΡΠΎΠΌΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², ΠΎΠ½ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ):
`from 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 (ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ, list_title):
"" "ΠΡΠΎΡΠΈΡΠ°ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠ°ΠΏΠΊΠΈ" ""
list_obj = context.web.lists.get_by_title (Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΠΏΠΈΡΠΊΠ°)
folder = list_obj.root_folder
context.load (ΠΏΠ°ΠΏΠΊΠ°)
context.execute_query ()
print ("URL-Π°Π΄ΡΠ΅Ρ ΡΠΏΠΈΡΠΊΠ°: {0}". ΡΠΎΡΠΌΠ°Ρ (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 ΡΠ°ΠΉΠ»_Π·Π°Π³ΡΡΠ·ΠΊΠΈ (ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ):
response = File.open_binary (context, "/ sites / new / Shared Documents / 2011-A / file1.csv")
ΠΏΠ΅ΡΠ°ΡΡ (ΠΎΡΠ²Π΅Ρ)
ΠΏΠ΅ΡΠ°ΡΡ (response.content)
Ρ ΠΎΡΠΊΡΡΡΡΠΌ (r "C: UsersaakashbDownloadstestfile1.csv", "wb") ΠΊΠ°ΠΊ local_file:
local_file.write (response.content)
ctx = ΠΠ΅Ρ
url = ' https://company.sharepoint.com/sites/new '
ctx_auth = AuthenticationContext (url = url)
Π΅ΡΠ»ΠΈ ctx_auth.acquire_token_for_user (username='[email protected] ', password =' ββ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
ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎ Π² ΡΡΡΠΎΠΊΠ΅, ΠΊΠΎΡΠΎΡΠ°Ρ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ ΡΠ°ΠΊ:
folder = ctx.web.get_folder_by_server_relative_url (app_settings ['urlrel'])
ΠΡΠ»ΠΈ ΡΡΠΎ Π½Π΅ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ, Ρ Π²Π΅ΡΠ½ΡΡΡ ΠΊ Π²Π°ΠΌ, ΡΡΠΎΠ±Ρ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²ΠΈΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ.
ΠΌ.
... Ρ ΠΈΠΌΠ΅Π» Π² Π²ΠΈΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Π° get_folder_by_server_relative_url Π²ΠΌΠ΅ΡΡΠΎ get_by_title, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ
app_settings = {'urlrel': '/ sites / abc / ΠΠ±ΡΠΈΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΡ / Π’ΠΠ‘Π’'}
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, fileName):
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 Π² myfiles:
print ("ΠΠ°Π³ΡΡΠ·ΠΊΠ° ΡΠ°ΠΉΠ»Π°: {0}". ΡΠΎΡΠΌΠ°Ρ (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 Π±Π°ΠΉΡ. ΠΡΡΡ ΠΈΠ΄Π΅ΠΈ, ΠΏΠΎΡΠ΅ΠΌΡ?
Π― ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ PDF Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π° Π²ΡΠ΅Π³ΠΎ 1 ΠΠ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΡΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ ΠΊΠΎΠ΄. ΠΡΠ±Π°Ρ ΠΈΠ΄Π΅Ρ?
Π― ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ PDF Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΡΠ°ΠΉΠ»Π° Π²ΡΠ΅Π³ΠΎ 1 ΠΠ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΡΠΉ Π²ΡΡΠ΅ ΠΊΠΎΠ΄. ΠΡΠ±Π°Ρ ΠΈΠ΄Π΅Ρ?
Π― ΠΏΠΎΠ½ΡΠ» ΡΡΠΎ, Π΄Π»Ρ ΠΌΠ΅Π½Ρ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ Π±ΡΠ» ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ URL-Π°Π΄ΡΠ΅Ρ. ΠΠΎΠ³Π΄Π° ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠ°ΠΏΠΊΠΈ, ΠΌΠ½Π΅ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ / sites / sitename / library ΠΈ Ρ. Π., ΠΡΠΎ ΠΏΡΠΎΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ / library. ΠΠΎ ΠΊΠΎΠ³Π΄Π° Ρ ΡΠΆΠ΅ Π·Π°Π³ΡΡΠΆΠ°Ρ ΡΠ°ΠΉΠ»Ρ, ΠΌΠ½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ / sites / sitename / folder / file.
ΠΡΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ°Π½Π½ΠΎ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΌΠΎΠ³Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠ°ΠΉΠ»Π°ΠΌ ΠΈ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΈΡ Π±Π΅Π· Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ / sites / sitename /, Π½ΠΎ ΡΠΎΠ³Π΄Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ²ΡΠ΅ΠΆΠ΄Π΅Π½ΠΎ. Π ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΡ / sites / sitename / ΠΏΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΏΠΊΠΈ, ΠΎΠ½ Π²ΡΠ΄Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ ΠΈ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ Ρ Π½Π°ΡΠΈΠ½Π°Ρ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ URL-Π°Π΄ΡΠ΅Ρ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ.
Π‘ΡΡΠ°Π½Π½ΠΎ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅ΡΡΡΡ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ / sites / sitename ΠΊ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ URL-Π°Π΄ΡΠ΅ΡΡ ΠΊΠ°ΠΊ Π΄Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΏΠΊΠΈ, ΡΠ°ΠΊ ΠΈ Π΄Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠΆΠ΅ΡΠ΅ Π»ΠΈ Π²Ρ ΠΏΠΎΠ΄Π΅Π»ΠΈΡΡΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠ°Π±ΠΎΡΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ. ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ Π·Π°Π³ΡΡΠ·ΠΈΡΡ Π²ΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΠΎΠ΄ΠΏΠ°ΠΏΠΊΠΈ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ / sites / sitename / Documents / somefolder, ΡΠΎ ΠΊΠ°ΠΊΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄?
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΡΠ΅Π±ΡΡΠ°. ΠΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΡΠ΅ΡΠΈΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Sharepoint.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ΅ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠΈΡΠ΅ ΠΌΠ΅Π½Ρ, Π²ΠΈΠ½ΠΎΠ²Π°Ρ @vgrem :) ... ΠΈ Ρ Π½Π΅ ΡΠ²Π΅ΡΠ΅Π½, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ, Π΅ΡΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΡΠΎΠ³ΠΎ ΠΆΠ΅ ....
ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΠΈΡΡ Π²ΡΠ΅ ΠΏΠ°ΠΏΠΊΠΈ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΎΠ±ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ², Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΠΎΠΏΡΠΎΠ±ΠΎΠ²Π°ΡΡ:
ΠΌ.