Т.к. он-лайн редактирование Excel файлов через облачный сервис Microsoft был запущен позже, то исторически сложилось так, что довольно обширная часть пользователей Microsoft Office все равно для он-лайн доступа к книгам использует именно Google Spreadsheets (Google таблицы), а не решение от Microsoft(Excel Online).
Хоть сам я гугл-таблицы почти не использую, но понадобилось мне получить данные из этого замечательного сервиса при помощи надстройки Power Query. Однако шаблона для получения данных из Google-таблиц там нет(в Power BI есть только Google Analitics, что не совсем то. Точнее – совсем не то). Поэтому как и напрашивалось я использовал получение данных из Интернета. Но не все так просто – публичная ссылка, предоставляемая Google-ом для совместного просмотра при обработке запросами выдавала совсем не то, что хотелось бы. Вот что я получил после вставки ссылки на Google-таблицу:
Т.е. мне предлагалось обработать структуру веб-страницы, а не структуру файла Excel. Можно было бы дальше танцевать с бубном именно с таким форматом и пытаться как-то из этого получить данные, но есть способы проще. Возможно для кого-то этот способ очевиден, но т.к. я обычно с Google-таблицами не работаю, то пришлось 20-30 минут поэкспериментировать, прежде чем дойти до простого решения.
А теперь по порядку о том,
Есть у нас загруженный в Google файл Excel. Теперь необходимо предоставить ему доступ для других пользователей и получать актуальную информацию из этого файла через Power Query или Power BI при каждом обновлении запроса. Уточню – редактируется файл в службе Google, он никуда не скачивается, не пересылается – все пользователи вносят изменения он-лайн прямо в Google Spreadsheets.
Выбрать в появившемся окне Весь документ и Таблица Microsoft Excel(XLSX)
Нажать Опубликовать. В появившемся окне скопировать ссылку.
Именно эту ссылку используем далее: вкладка Данные -Создать запрос -Из других источников -Из интернета. В окно вставляем эту ссылку. Далее появляется окно предпросмотра, в котором выбираем нужный лист/листы и загружаем. Все как для обычных файлов Excel(пример обработки файла Excel можно посмотреть в этой статье: Как из оборотно-сальдовой ведомости сделать сводную таблицу при помощи Power Query).
Так же эту ссылку можно разослать всем, кто должен иметь доступ к просмотру файла. Ключевое слово здесь – просмотру. Т.е. таким методом мы можем без всяких дополнительных действий получить данные из файла через запрос, но изменять хоть что-то в файле никто кроме нас не сможет - только видеть наши изменения. Поэтому данный вариант подходит далеко не всегда.
Появится окно:
В нем надо будет нажать на пункт "
Созданная ссылка будет примерно такого вида.
Если использовать напрямую именно такую строку, то нас ждет небольшое разочарование – на выходе получим структуру веб-страницы, а не структуру файла Excel(об этом я писал в самом начале статьи и там же можно посмотреть по скринам как это выглядит). Потому что такая форма ссылки генерирует именно веб-документ со своей разметкой, которая не распознается как файл Excel. Однако это очень легко исправить. Удаляем из ссылки последние аргументы:
И теперь идем на вкладку Данные -Создать запрос -Из других источников -Из интернета. В окно вставляем эту ссылку
Появляется окно предпросмотра, в котором выбираем нужный лист/листы и загружаем
Все, дальнейшие действия ничем не отличаются от действий с локально загруженным файлом Excel. Просто производите нужные манипуляции с данными для получения желаемого результата(анализ, сводные, графики и т.п.).
Вот тут ещё есть мануал:https://support.google.com/google-ads/thread/2397740?hl=ru
Вылезает ошибка. Подробности: "Тег Relationship содержит неправильный атрибут., строка 2, позиция 86." Кто-то знает как ее исправить?
Василь, к сожалению, эта ошибка указывает на неверно сформированный файл. Бывает так, что сторонние разработчики и программы(в том числе Google) допускают огрехи в схеме XML при формировании файлов xlsx, что и вызывает подобные ошибки. По сути проверить в это просто: сохранить файл на диск -открыть при помощи Excel(возможно, появится сообщение о попытке восстановить ошибки) -сохранить -закрыть. После этого файл будет загружаться корректно. Знаю случаи, когда такая ошибка возникала при наличии сводной таблицы в Google Sheet. Это тоже можно проверить: удалить сводную таблицу и повторить попытку загрузки или переместить сводную таблицу в другую книгу, а данные из этой сводной вытянуть в нужный файл по ссылке на неё путем применения IMPORTRANGE.
Здравствуйте Дмитрий !
Благодарю вас за такое простое решение для получения данных из gs.
Успешно пользовался им все время, но вчера при обновлении запроса выскочила ошибка. Как с ней справиться ?DataSource.Error:
Web.Contents не удалось получить содержимое из "https://accounts.google.com/ServiceLogin?service=wise&passive=1209600&continue=https://doc-14-1k-sheets.googleusercontent.com/export/70cmver1f290kjsnpar5ku2h9g/47k1biko72afv9nbdk3e1v6028/1650950700000/114708278579398321193/*/1g8CxKxHlazJ44NY_8mpcvNEBE_l2ZREptLVPAeUVCWU&followup=https://doc-14-1k-sheets.googleusercontent.com/export/70cmver1f290kjsnpar5ku2h9g/47k1biko72afv9nbdk3e1v6028/1650950700000/114708278579398321193/*/1g8CxKxHlazJ44NY_8mpcvNEBE_l2ZREptLVPAeUVCWU<mpl=sheets" (400): Bad Request
Сведения:
DataSourceKind=Web
DataSourcePath=https://docs.google.com/spreadsheets/d/1g8CxKxHlazJ44NY_8mpcvNEBE_l2ZREptLVPAeUVCWU/export
Url=https://accounts.google.com/ServiceLogin?service=wise&passive=1209600&continue=https://doc-14-1k-sheets.googleusercontent.com/export/70cmver1f290kjsnpar5ku2h9g/47k1biko72afv9nbdk3e1v6028/1650950700000/114708278579398321193/*/1g8CxKxHlazJ44NY_8mpcvNEBE_l2ZREptLVPAeUVCWU&followup=https://doc-14-1k-sheets.googleusercontent.com/export/70cmver1f290kjsnpar5ku2h9g/47k1biko72afv9nbdk3e1v6028/1650950700000/114708278579398321193/*/1g8CxKxHlazJ44NY_8mpcvNEBE_l2ZREptLVPAeUVCWU<mpl=sheets
OlegV, проблема либо на стороне Гугла, либо к файлу не предоставлен доступ(файл не расшарен для всех, у кого есть ссылка). Попробуйте переназначить ссылку на файл в Гугле и подключиться заново.
Благодарю за оперативность Дмитрий
Проверю ещё раз.