Вопрос или проблема
Вот публичная страница Sharepoint, на которой показан встроенный документ XLSX.
Изучая HTML страницы, я нашел прямую ссылку на файл XLSX. Вот она: https://countyofvernon.sharepoint.com/teams/CountyClerk/Shared Documents/General/ELECTION/ELECTIONS - Ron/2024 Elections/2024 - August/Election Night/Election Night Call-In Sheet v1 - Contests By Reporting Unit For County Use 2024.08.xlsx
.
Если я просто скопирую/вставлю это в браузер, файл загружается.
Но если я попытаюсь использовать download.file()
, я получаю код ошибки: HTTP статус '401 Unauthorized'
.
download.file(url = str_replace_all(string = "https://countyofvernon.sharepoint.com/teams/CountyClerk/Shared Documents/General/ELECTION/ELECTIONS - Ron/2024 Elections/2024 - August/Election Night/Election Night Call-In Sheet v1 - Contests By Reporting Unit For County Use 2024.08.xlsx",
pattern = " ",
replacement = "%20"),
destfile = "~/downloads/vernon.xlsx")
Кто-нибудь знает, как обойти это? Поскольку загрузка происходит без дополнительных учетных данных через браузер, я надеюсь, что есть способ загрузить файл через командную строку.
Ответ или решение
Чтобы загрузить файл XLSX по ссылке, встроенной в веб-страницу SharePoint, выполните следующие шаги:
-
Проверка доступа и авторизации: Поскольку вы столкнулись с ошибкой
HTTP status was '401 Unauthorized'
, это означает, что вы не авторизованы для доступа к этому ресурсу с помощью программы. Даже если вы можете загрузить файл через браузер, это может происходить из-за того, что браузер автоматически обрабатывает вашу аутентификацию (например, через сохраненные учетные данные или куки). -
Использование библиотек для аутентификации:
Для загрузки файла из SharePoint с использованием языка программирования R, вы можете использовать библиотекуhttr
, которая позволяет выполнять запросы с необходимыми заголовками аутентификации. Для этого следуйте следующему коду:library(httr) # Укажите свои учетные данные SharePoint username <- "ваш_логин" password <- "ваш_пароль" # URL к файлу file_url <- "https://countyofvernon.sharepoint.com/teams/CountyClerk/Shared%20Documents/General/ELECTION/ELECTIONS%20-%20Ron/2024%20Elections/2024%20-%20August/Election%20Night/Election%20Night%20Call-In%20Sheet%20v1%20-%20Contests%20By%20Reporting%20Unit%20For%20County%20Use%202024.08.xlsx" # Выполняем запрос с аутентификацией response <- GET(file_url, authenticate(username, password)) # Проверяем, успешен ли запрос if (status_code(response) == 200) { writeBin(content(response, "raw"), "~/downloads/vernon.xlsx") print("Файл успешно загружен!") } else { print(paste("Ошибка при загрузке файла:", status_code(response))) }
В этом коде:
- Замените
ваш_логин
иваш_пароль
на свои реальные учетные данные. - Мы используем функцию
GET()
из библиотекиhttr
для выполнения запроса с аутентификацией.
- Замените
-
Использование альтернативных подходов:
Если вам не удается загрузить файл с помощью кода или если в вашей организации есть политики, ограничивающие использование учетных данных для программного доступа, вы можете рассмотреть следующие варианты:- Использование PowerShell: Если у вас есть доступ к PowerShell, вы можете использовать скрипт PowerShell для выполнения загрузки с использованием SharePoint API и аутентификации.
- Использование Microsoft Excel: В Microsoft Excel есть возможность подключаться к файлам SharePoint напрямую и загружать их.
Таким образом, для корректной загрузки файла XLSX на ваш компьютер через код, вам необходимо убедиться, что вы авторизованы и используете правильные методы аутентификации.