Файлы к уроку:
Ссылки:
Описание
В этом уроке вы узнаете как подключиться к файлу или папке с файлами, которые лежат в вашем личном облаке OneDrive или в личном облаке OneDrive другого человека, который делится файлами с вами.
В качестве примера мы подключимся сначала к одному файлу xlsx в личном облаке OneDrive, а потом к папке с несколькими xlsx файлами.
Решение
Для того, чтобы прочитать файл или папку в OneDrive мы воспользуемся функциями Binary.ToText и Text.ToBinary.
Этими функциями мы сможем преобразовать ссылку OneDrive в нужный формат.
Далее мы создадим строку запроса к API OneDrive.
Примененные функции
- Excel.CurrentWorkbook
- Binary.ToText
- Text.ToBinary
- TextEncoding.Utf8
- BinaryEncoding.Base64
- Excel.Workbook
- Web.Contents
- Json.Document
- Table.FromList
- Splitter.SplitByNothing
- ExtraValues.Error
- Table.ExpandRecordColumn
- Table.AddColumn
- Table.SelectColumns
- Table.ExpandTableColumn
- Table.SelectRows
Код
Для начала создадим отдельный запрос с названием url_single с кодом формирования запроса к API. Код для формирования запроса к API для подключения к одному файлу:
let
// берем url из именной ячейки с листа Excel
one_drive_url = Excel.CurrentWorkbook(){[Name = "od_file"]}[Content]{0}[Column1],
// преобразовываем ссылку в формат base64
base64 = Binary.ToText(
Text.ToBinary(one_drive_url, TextEncoding.Utf8),
BinaryEncoding.Base64
),
// готовый запрос API
new_url = "https://api.onedrive.com/v1.0/shares/u!" & base64 & "/root/content"
in
new_url
То же самое сделаем и для папки в облаке OneDrive. Создадим запрос с названием url_multiple:
let
one_drive_url = Excel.CurrentWorkbook(){[Name = "od_folder"]}[Content]{0}[Column1],
base64 = Binary.ToText(
Text.ToBinary(one_drive_url, TextEncoding.Utf8),
BinaryEncoding.Base64
),
new_url = "https://api.onedrive.com/v1.0/shares/u!" & base64 & "/root/children"
in
new_url
Теперь подключимся к одному файлу на личном облаке OneDrive:
let
source = Excel.Workbook(Web.Contents(url_single)),
result = source{[Item = "ККМтовар", Kind = "Table"]}[Data]
in
result
Подключение к папке будет немного сложнее, потому что нужно будет прочитать JSON. Код будет такой:
let
source = Json.Document(Web.Contents(url_multiple)),
value = source[value],
record_to_table = Table.FromList(
value,
Splitter.SplitByNothing(),
null,
null,
ExtraValues.Error
),
expand_table_1 = Table.ExpandRecordColumn(
record_to_table,
"Column1",
{"webUrl"},
{"webUrl"}
),
col_get_data = Table.AddColumn(
expand_table_1,
"GetData",
each fn_1drive_file_url([webUrl])
),
col_read_xl = Table.AddColumn(
col_get_data,
"read_xl",
each Excel.Workbook(Web.Contents([GetData]))
),
select_cols_1 = Table.SelectColumns(col_read_xl, {"read_xl"}),
expand_table_2 = Table.ExpandTableColumn(
select_cols_1,
"read_xl",
{"Name", "Data", "Kind"},
{"Name", "Data", "Kind"}
),
select_rows = Table.SelectRows(expand_table_2, each ([Kind] = "Table")),
select_cols_2 = Table.SelectColumns(select_rows, {"Data"}),
combine_tables = Table.ExpandTableColumn(
select_cols_2,
"Data",
{
"Дата",
"Месяц",
"Документ",
"Вид операции",
"Тип оплаты",
"Вид оплаты",
"POSID",
"Торговая точка",
"Регион",
"Канал продажи",
"ТМ",
"Логин WD",
"Код",
"Номенклатура",
"Количество",
"Себестоимость",
"Цена",
"Скидка",
"Сумма продаж",
"Валовая прибыль, руб.",
"Сумма у. е. ФО",
"Премия",
"Бонусная ставка"
},
{
"Дата",
"Месяц",
"Документ",
"Вид операции",
"Тип оплаты",
"Вид оплаты",
"POSID",
"Торговая точка",
"Регион",
"Канал продажи",
"ТМ",
"Логин WD",
"Код",
"Номенклатура",
"Количество",
"Себестоимость",
"Цена",
"Скидка",
"Сумма продаж",
"Валовая прибыль, руб.",
"Сумма у. е. ФО",
"Премия",
"Бонусная ставка"
}
)
in
combine_tables
Этот урок входит в курс Веб-запросы в Power Query
Номер урока | Урок | Описание |
---|---|---|
1 | Котировки Yahoo Finance | Вы хотите получить историю котировок акций MCD с 2000 года по текущий день с сайта Yahoo Finance. Вы копируете ссылку на раздел с историческими данными, вставляете ссылку в Power Query и получаете только 100 строк. |
2 | HTML, получение данных по облигациям | Мы хотим получить данные по всем облигациям со страницы bonds.finam.ru |
3 | Многостраничное извлечение | На разных страницах находятся сайта находятся котировки золота на каждый год. Нужно соединить все данные в одну таблицу. |
4 | JSON, Котировки Yahoo Finance 2 | В этом уроке мы разберем еще один способ скачивания котировок с Yahoo Finance. Этот способ намного удобнее и быстрее. Здесь мы научимся обрабатывать формат JSON. |
5 | Котировки Московской биржи | В этом уроке мы научимся получать прямо в Excel котировки разных ценных бумаг с сайта Московской биржи. Московская биржа предоставляет возможность скачивать котировки и другую информацию по ценным бумагам при помощи специальных ссылок. Если мы введем такую ссылку в Power Query, создав запрос из интернета, то получим интересующие нас котировки прямо в Excel. |
6 | Неразмеченный текст | Вы делаете запрос к Web-странице и сталкиваетесь с неразмеченным текстом. Вы хотите при помощи Power Query этот неразмеченный текст преобразовать в нормальную красивую таблицу. |
7 | Текстовый документ, веб-страница, List.Zip | В этом запросе мы научимся получать нужную информацию из текста веб-страницы. |
8 | Youtube Data API | В этом уроке мы научимся получать данные из Youtube Data API. Узнаем как получить данные о Youtube канале: список видео и плейлистов, названия, описания, длительность, тэги, количество лайков, дизлайков, просмотров и комментариев. |
9 | Личный OneDrive — подключаемся напрямую к файлам и папкам | В этом уроке мы разберем как напрямую подключиться к файлам и папкам на личном OneDrive. |
10 | Подключение Google Spreadsheets, Google Drive (Excel.Workbook, Web.Contents) | В этом уроке мы научимся подключаться к xlsx файлам, которые находятся в вашем Google Drive. |
11 | Получить все станции метро | Получим таблицу с перечнем станций метрополитена даже с координатами широты и долготы. |
12 | Получить ссылки с веб-страницы (Html.Table) | Получить URL с веб-страницы. Сделать запрос к каждому URL, получить таблицы и объединить их всех по вертикали. |
13 | Получить все URL с веб-страницы | Получим нужные URL с веб-страницы в Excel. Сделать запрос к каждому URL, получить таблицы и объединить их по вертикали. |
14 | Ищем работу через API Head Hunter (hh.ru) | Получим таблицу с перечнем вакансий с сайте HH. Получим вакансии, в названии или описании которых встречаются слова SQL, Pandas, Power Query, Power Pivot, Power BI. |
15 | Запрос к XML Sitemap | Сделаем запрос к sitemap.xml, чтобы извлечь список всех веб-страниц сайта. |