Страницы: 1
RSS
Сводная таблица с источником файла, который лежит на облаке, Подключение сводной таблицы к файлу, лежащему на облаке
 
Добрый день!

Имеется файл csv, который лежит на облаке (ownCloud).
Также имеет рабочий файл xlsx на рабочем столе.

В рабочем файле хочу создать сводную таблицу, с внешним подключением к тому самому файлу csv, что лежит на облаке.

Не смог разобраться и найти ответ, как решить данную задачу.

Прошу помощи!
 
VladTim, давайте ссылку к тому самому файлу csv. попробуем подключить. ни разу еще не подключал
 
$
 
продаете или покупаете?
 
Цитата
artyrH написал:
ни разу еще не подключал
А что там сложного?
Если рассматривать ПланетуЭксель как облако, то вот вам сводная на базе одного из файлов вот таким запросом:
Код
let
    Source = Excel.Workbook(Web.Contents("https://www.planetaexcel.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=352342&action=download"), null, true),
    Кофе_Sheet = Source{[Item="Кофе",Kind="Sheet"]}[Data],
    #"Promoted Headers" = Table.PromoteHeaders(Кофе_Sheet, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Column1", type text}, {"Кофе, 5 гр", Int64.Type}, {"Кофе, 10 гр", Int64.Type}})
in
    #"Changed Type"

Ну, с csv вместо Excel.Workbook будут другие функции.
Главное у сервиса облака ссылку на скачивание файла получить.
Вот вариант запроса и для csv:
Код
let
    Source = Csv.Document(Web.Contents("https://www.planetaexcel.ru/bitrix/components/bitrix/forum.interface/show_file.php?fid=350996&action=download"),[Delimiter=";", Columns=8]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Replaced Value" = Table.ReplaceValue(#"Promoted Headers",".",",",Replacer.ReplaceText,{"CV_PRICE_1"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Replaced Value",{{"IE_XML_ID", Int64.Type}, {"IE_NAME", type text}, {"IE_PREVIEW_TEXT", type text}, {"IE_DETAIL_TEXT", type text}, {"IP_PROP61", type text}, {"CV_QUANTITY_FROM", type text}, {"CV_QUANTITY_TO", type text}, {"CV_PRICE_1", type number}})
in
    #"Changed Type"
Изменено: PooHkrd - 01.08.2019 15:54:59
Вот горшок пустой, он предмет простой...
 
Большое спасибо за помощь!
 
VladTim, если что весь код генерируется редактором запросов PQ самостоятельно, я только на кнопки жал: получить данные из интернета и т.д. Ручками код не дописывал.
Вот горшок пустой, он предмет простой...
 
PooHkrd, спасибо
 
PooHkrd, не могли бы показать как по этим ссылкам открыть файл .xlsx и папку
Код
https://yadi.sk/i/oLdQcO2ewscN_Q
https://yadi.sk/d/BN79Bduv7PD9CQ
Изменено: artyrH - 04.08.2019 16:24:33
 
Артур, если вы обратили внимание, то во всех ссылках на файлы указывалась прямая ссылка на его скачивание. Фактически, при обновлении запроса файл скачивается во временную папку, а потом уже открывается для чтения данных. Следовательно, для первой ссылке нужно преобразовать её в прямую ссылку на загрузку.
Код
let
    Source = Excel.Workbook(Web.Contents("https://downloader.disk.yandex.ru/disk/8b084f76099bfd71448dbecbf7079dc13dae7aaec4fefe0db6cce2cb4fcc5c20/5d473857/YnnUNmZqrmxORuESdQgZaMf3QIKK0ct15trSTq3FSpyHKWZghi0O8595F1IGo-w4aUvUFDv2gAAd5e_iB2_iLA%3D%3D?uid=0&filename=02_Рабочий%20список.xlsx&disposition=attachment&hash=ZkVWIMKFBhBgvFJUZTw81LcR0%2BkRxuGOqKFNSbd/hJeYIMRgBy9gYgX%2BsG1kxBX%2Bq/J6bpmRyOJonT3VoXnDag%3D%3D&limit=0&content_type=application%2Fvnd.openxmlformats-officedocument.spreadsheetml.sheet&owner_uid=265744659&fsize=623483&hid=01ea92e6bab83a035fe9c25df3e0178e&media_type=document&tknv=v2"), null, true),
    Лист1_Sheet = Source{[Item="Лист1",Kind="Sheet"]}[Data],
    #"Changed Type" = Table.TransformColumnTypes(Лист1_Sheet,{{"Column1", type text}, {"Column2", type text}, {"Column3", type any}, {"Column4", type any}, {"Column5", type any}, {"Column6", type any}, {"Column7", type any}, {"Column8", type any}, {"Column9", type any}, {"Column10", type any}, {"Column11", type any}, {"Column12", type any}, {"Column13", type any}, {"Column14", type any}, {"Column15", type any}, {"Column16", type any}, {"Column17", type text}, {"Column18", type text}, {"Column19", type text}, {"Column20", type any}})
in
    #"Changed Type"

А вот для папки - нужно искать по какому принципу яндекс формирует такие ссылки на закачку. Тогда по имени файла, разбирая веб страницу со списком файлов, формировать такие ссылки и качать в функции итераторе , например List.Transform
Может проще поставить клиент яндекс диск?
Updated
Судя по этому обсуждению Как в Яндекс-диске получить самую что ни есть прямую ссылку на файл?, можно нарваться на такую проблему
Цитата
а выудить ссылку яндекса можно скачав свой загруженный файл а затем скопировать адрес скачки, например через Opera качать и там будет прямой адрес, но вот я тестировал и вроде тот адрес работает часов 6, типа временный хеш
если использовать предложенный мной метод. Там, в обсуждении, есть и другие подходы - дерзайте.
Изменено: Андрей VG - 04.08.2019 19:19:17
 
Цитата
Андрей VG написал:
нужно преобразовать её в прямую ссылку на загрузку
а как это делается? по ссылке, похоже, есть ответы. спасибо, Андрей
с гуглдиска без изменений ссылки  смог только .csv и .xlsx получить. и то один раз скачал, а второй раз по непонятным причинам ссылка возвращает html-текст.
как то запутано все. не пойдет мне такой вариант
Код
let
    Source = Web.Page(Web.Contents("https://drive.google.com/open?id=1JE_fTGOzswsRpNNfm87dJClKle7pIcDe")),
    #"Filtered Rows" = Table.SelectRows(Source, each ([Source] = "Table"))[[Data]],
    #"Expanded {0}" = Table.ExpandTableColumn(#"Filtered Rows", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6"}, {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6"}),
    #"Promoted Headers" = Table.PromoteHeaders(#"Expanded {0}", [PromoteAllScalars=true])
in
    #"Promoted Headers"


let
    Source = Web.Page(Web.Contents("https://drive.google.com/file/d/1mA9lMvRRqvwRQVzhIUIArmF7b-Ncgy6g")),
    #"Filtered Rows" = Table.SelectRows(Source, each ([Source] = "Table"))[[Data]],
    #"Expanded {0}" = Table.ExpandTableColumn(#"Filtered Rows", "Data", {"Column1", "Column2", "Column3", "Column4"}),
    #"Promoted Headers" = Table.PromoteHeaders(#"Expanded {0}", [PromoteAllScalars=true])
in
    #"Promoted Headers"
Изменено: artyrH - 04.08.2019 20:58:32
 
Приветствую Андрей.
Цитата
Андрей VG написал:
А вот для папки - нужно искать по какому принципу яндекс формирует такие ссылки на закачку
Зачем искать, если она есть, но только для мыл на yandex.ru
Код
UU = "https://yadi.sk/i/03bE933n3PqpG2"
URL = GetyanURU(UU)
Debug.Print URL
Function GetyanURU(UU) As String
    GetyanURU = ""
    UU = Replace(UU, "/", "%2F")
    UU = Replace(UU, ":", "%3A")
    URL = "https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key=" & UU
    On Error Resume Next
    Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
    With oXMLHTTP
        .Open "GET", URL, False
        .send
        sHTML = .responseText
        Set RegExp = CreateObject("VBScript.RegExp")
        RegExp.Pattern = Chr(34) & "(https(.+?))" & Chr(34)

        Set oMatches = RegExp.Execute(sHTML)
        If oMatches.Count > 0 Then
            GetyanURU = oMatches(0).subMatches(0)
        End If

    End With

    Set oXMLHTTP = Nothing
End Function
 
doober, спасибо за код. а для гугл-диска есть такой api ?
получилось так. будет ли работать все время - не знаю
Код
let
    UU = "https://yadi.sk/i/oLdQcO2ewscN_Q",
    URL = "https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key=" & UU,
    Source =  Json.Document(Web.Contents(URL))[href],
    Custom1 = Excel.Workbook(Web.Contents(Source), null, true),
    #"Filtered Rows" = Table.SelectRows(Custom1, each ([Kind] = "Sheet"))[[Data]],
    #"Expanded {0}" = Table.ExpandTableColumn(#"Filtered Rows", "Data", {"Column1", "Column2", "Column3", "Column4", "Column5", "Column6"})
in
    #"Expanded {0}"
 
Цитата
doober написал:
Зачем искать, если она есть, но только для мыл на yandex.ru
Сергей, большое спасибо! Правда, для папки даёт не список файлов для скачивания, а zip архив содержимого папки. Но разбор zip в Power Query то ещё счастье... Хотя и решаемое. Так что это не ответ на то, как получать файлы из папки по очереди :)  В общем, прошу не счесть это чрезмерной наглостью, но можно ссылочку на доки? Несколько попыток поиска не дали результата, как была получена такая ссылка. Не ходить же век с протянутой рукой. Кто ищет - тот найдёт API Яндек.Диска, спасибо за наводку!
Цитата
artyrH написал:
а для гугл-диска есть такой api ?
Артур, и вас, как начинающих ТС забанили в поисковых системах? Например.
Изменено: Андрей VG - 04.08.2019 22:16:55
 
Андрей VG, вариант понятен, только про api нет там информации. ищу такое
Код
"https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key="
для гугл-диска
 
Цитата
artyrH написал:
только про api нет там информации...
для гугл-диска
Странно, а это не то? Уж если вас не устраивают типовые решения.
Изменено: Андрей VG - 04.08.2019 22:22:29
 
Цитата
artyrH написал:
будет ли работать все время - не знаю
сегодня работает
для гугл-диска так и не прикрутил
 
Цитата
artyrH написал:
для гугл-диска
Стандартный через ссылку на закачку.
 
Андрей VG, Ваш вариант с книгой работает. спасибо
Страницы: 1
Наверх