Как скачать файл XLSX по ссылке, встроенной на веб-странице SharePoint.

Вопрос или проблема

Вот публичная страница 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, выполните следующие шаги:

  1. Проверка доступа и авторизации: Поскольку вы столкнулись с ошибкой HTTP status was '401 Unauthorized', это означает, что вы не авторизованы для доступа к этому ресурсу с помощью программы. Даже если вы можете загрузить файл через браузер, это может происходить из-за того, что браузер автоматически обрабатывает вашу аутентификацию (например, через сохраненные учетные данные или куки).

  2. Использование библиотек для аутентификации:
    Для загрузки файла из 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 для выполнения запроса с аутентификацией.
  3. Использование альтернативных подходов:
    Если вам не удается загрузить файл с помощью кода или если в вашей организации есть политики, ограничивающие использование учетных данных для программного доступа, вы можете рассмотреть следующие варианты:

    • Использование PowerShell: Если у вас есть доступ к PowerShell, вы можете использовать скрипт PowerShell для выполнения загрузки с использованием SharePoint API и аутентификации.
    • Использование Microsoft Excel: В Microsoft Excel есть возможность подключаться к файлам SharePoint напрямую и загружать их.

Таким образом, для корректной загрузки файла XLSX на ваш компьютер через код, вам необходимо убедиться, что вы авторизованы и используете правильные методы аутентификации.

Оцените материал
Добавить комментарий

Капча загружается...