Можно ли встроить электронную таблицу Google в документ Google а-ля Microsoft Excel и Microsoft Word? Как насчет диаграммы из электронной таблицы?
С сегодняшнего дня (20 мая 2016 г.) Google начинает развертывать возможность встраивать диаграмму из электронной таблицы Google в документ Google. На данный момент в двух из трех моих учетных записей Google этот параметр доступен в меню Вставить
с новым подменю Вставить → Диаграмма
под Вставить → Рисунок…
элемент.
Когда вы вставляете такие диаграммы, они остаются связанными с исходной электронной таблицей. Если все, что вам нужно, это табличные данные, есть тип табличной диаграммы, который можно использовать для представления данных в виде простой таблицы.
На этом этапе есть некоторые ограничения (например, в отношении размера диаграммы ), а диаграмма должна существовать в электронной таблице, прежде чем вы сможете ее вставить, но это идет в правильном направлении…
Чтобы вставить электронную таблицу или таблицу, используйте Добавить таблицу из Google Таблиц путем копирования и вставки из Таблиц в Документы и выберите связанный параметр.
Диаграмма не обновляется в реальном времени, если вы изменяете исходную электронную таблицу, пока вы документ открыт, однако документ обнаружит изменения и даст вам кнопку Обновить над встроенной таблицей, чтобы отразить последние изменения в источнике.
AFAIK, вы можете только копировать и вставлять из электронной таблицы в текстовый документ. Электронная таблица вставлена как таблица, но они не связаны: если вы измените что-то в электронной таблице, это не отразится в текстовом документе.
Конечно, мне бы очень хотелось будет доказано, что ошиблись!

-
1К сожалению, на данный момент это мой единственный вариант. — эль, 07 июля 2010 г., 13:33
-
1См. мой ответ ниже, теперь есть новая опция, которая делает это немного удобнее и обеспечивает динамические обновления. — Жан-Рене Бувье 20 мая ’16 в 8:44
AFAIK, вы можете только копировать и вставлять из электронной таблицы в текстовый документ. Электронная таблица вставляется как таблица, но они не связаны: если вы измените что-то в электронной таблице, это не отразится в текстовом документе..
Конечно, я бы очень хотел, чтобы меня доказали, что он неправ!
Вот решение на основе сценария, которое позволяет вставлять таблицу с содержимым из заданного диапазона в заданную электронную таблицу. Я не пытался найти способ синхронизации данных в реальном времени, так как это казалось непрактичным, учитывая потенциально большой объем данных, который необходимо было бы передавать при каждом редактировании электронной таблицы. Вместо этого сценарий добавляет в документ настраиваемый пункт меню «обновить данные».
Скрипт должен быть привязан к документу (т.е. создан с помощью Инструменты> Редактор скриптов в меню документа). URL-адрес электронной таблицы, а также используемый лист и диапазон указываются в скрипте. Чтобы встроить все данные на лист, замените .getRange (rangeName)
на .getDataRange ()
.
Когда Сначала выполняется функция updateData, она добавляет таблицу в конец документа. При последующих запусках он обновляет таблицу на месте (то есть, если после таблицы добавляется больше текста, порядок будет сохранен).
Обратите внимание, что вырезание-вставка таблицы нарушит процесс обновления (скрипт добавит новую таблицу в конце), поскольку вставленная копия является новым объектом. Вместо этого скопируйте текст вокруг таблицы.
function onOpen () {DocumentApp.getUi () .createMenu ('Custom') .addItem ('Update Data', 'updateData') .addToUi ();} function updateData () {var ssUrl = 'здесь URL таблицы'; var sheetName = 'Лист2'; //имя используемого листа var rangeName = 'A1: C3'; //диапазон значений для включения var values = SpreadsheetApp.openByUrl (ssUrl) .getSheetByName (sheetName) .getRange (rangeName) .getValues (); var doc = DocumentApp.getActiveDocument (); var body = doc.getBody (); var range = doc.getNamedRanges ('embeddedSheet-range'); если (range.length == 0) {var table = body.appendTable (значения); } еще {tableRange = диапазоны [0]; таблица = tableRange.getRange (). getRangeElements () [0] .getElement (); var ind = body.getChildIndex (таблица); tableRange.remove (); body.removeChild (таблица); table = body.insertTable (ind, значения); } var rangeBuilder = doc.newRange (); rangeBuilder.addElement (таблица); doc.addNamedRange ('embeddedSheet-range', rangeBuilder.build ());}
Технические примечания
-
Также возможно синхронизировать данные каждый час в дополнение к ручной. Просто добавьте основанный на времени триггер из меню Ресурсы редактора сценариев, чтобы он запускал функцию updateData.
-
Можно также адаптировать этот сценарий для привязки к исходную электронную таблицу. Для этого потребуется изменить способ открытия документа (например, по URL-адресу), но в остальном логика остается той же.
-
Громоздкая часть скрипта — это получение дескриптора существующей таблицы в документе. Для этого необходимо поместить его в именованный диапазон. Кроме того, гораздо целесообразнее полностью заменить элемент таблицы, чем возиться с записями существующей таблицы. Поскольку именованный диапазон неизменяем, он также удаляется вместе с таблицей, которую он содержит, а затем создается снова вместе с новой таблицей.
-
Отлично работает. Есть ли способ получить форматирование (в частности, цвета фона ячеек)? — cheshirekow, 6 мая 2016, 15:42
-
ПРИМЕЧАНИЕ. «URL-адрес электронной таблицы», очевидно, должен содержать полный URL-адрес, включая элементы
/edit # gid = 0
в конце. — cheshirekow, 6 мая 2016, 15:43 -
Невозможно импортировать форматирование другой электронной таблицы. — user79865, 6 мая 2016, 15:55
-
Ссылки также не передаются, как и цвета. Есть ли способ изменить этот сценарий, чтобы включить все форматирование? Очень умная работа над проблемой вырезания и вставки сработала как шарм! — unc0nnected 02 июля ’16 в 17:34
Вот решение на основе сценария, которое позволяет вставлять таблицу с содержимым из заданного диапазона в заданную электронную таблицу. Я не пытался найти способ синхронизации данных в реальном времени, так как это казалось непрактичным, учитывая потенциально большой объем данных, который необходимо было бы передавать при каждом редактировании электронной таблицы. Вместо этого сценарий добавляет в документ настраиваемый пункт меню «обновить данные».
Скрипт должен быть привязан к документу (т.е. создан с помощью Инструменты> Редактор скриптов в меню документа). URL-адрес электронной таблицы, а также используемый лист и диапазон указываются в скрипте. Чтобы встроить все данные на лист, замените .getRange (rangeName)
на .getDataRange ()
.
Когда Сначала выполняется функция updateData, она добавляет таблицу в конец документа. При последующих запусках он обновляет таблицу на месте (то есть, если после таблицы добавляется больше текста, порядок будет сохранен).
Обратите внимание, что вырезание-вставка таблицы нарушит процесс обновления (скрипт добавит новую таблицу в конце), поскольку вставленная копия является новым объектом. Вместо этого скопируйте текст вокруг таблицы.
function onOpen () {DocumentApp.getUi () .createMenu ('Custom'). addItem ('Обновить данные', 'updateData') .addToUi ();} function updateData () {var ssUrl = 'url электронной таблицы здесь'; var sheetName = 'Лист2'; //имя используемого листа var rangeName = 'A1: C3'; //диапазон значений для включения var values = SpreadsheetApp.openByUrl (ssUrl) .getSheetByName (sheetName) .getRange (rangeName) .getValues (); var doc = DocumentApp.getActiveDocument (); var body = doc.getBody (); var range = doc.getNamedRanges ('embeddedSheet-range'); если (range.length == 0) {var table = body.appendTable (значения); } еще {tableRange = диапазоны [0]; таблица = tableRange.getRange (). getRangeElements () [0] .getElement (); var ind = body.getChildIndex (таблица); tableRange.remove (); body.removeChild (таблица); table = body.insertTable (ind, значения); } var rangeBuilder = doc.newRange (); rangeBuilder.addElement (таблица); doc.addNamedRange ('embeddedSheet-range', rangeBuilder.build ());}
Технические примечания
-
Также возможно синхронизировать данные каждый час в дополнение к ручной. Просто добавьте основанный на времени триггер из меню Ресурсы редактора сценариев, чтобы он запускал функцию updateData.
-
Можно также адаптировать этот сценарий для привязки к исходную электронную таблицу. Для этого потребуется изменить способ открытия документа (например, по URL-адресу), но в остальном логика остается той же.
-
Громоздкая часть скрипта — это получение дескриптора существующей таблицы в документе. Для этого необходимо поместить его в именованный диапазон. Кроме того, гораздо целесообразнее полностью заменить элемент таблицы, чем возиться с записями существующей таблицы. Поскольку именованный диапазон неизменяем, он также удаляется вместе с таблицей, которую он содержит, а затем создается снова вместе с новой таблицей.
Да, можно. Скопируйте содержимое листа и вставьте его в свой документ, в правом углу он спросит, хотите ли вы сделать ссылку на электронную таблицу. Если вы это сделаете, после редактирования электронной таблицы вы можете щелкнуть значок обновления в своих документах, чтобы внести изменения в ваш документ.
-
По состоянию на начало 2018 года это лучший ответ на часть вопроса, касающуюся вставки таблицы Google Sheet в Документ Google. — dlukes 12 янв., 13:06
-
И насколько я могу судить, причина, по которой я нашел этот поток, заключается в том, что он ограничен 400 ячейками. — TC76 14 авг. ’19 в 20:01
Да, можно. Скопируйте содержимое листа и вставьте его в свой документ, в правом углу он спросит, хотите ли вы сделать ссылку на электронную таблицу. Если вы это сделаете, после редактирования электронной таблицы вы можете щелкнуть значок обновления в своих документах, чтобы внести изменения в ваш документ.
Альтернативой является использование Сайтов Google или любого другого редактора контента, который позволяет встраивать контент iframe.
Встраивать Таблицы Google на странице Сайтов Google
- Создайте новый сайт или перейдите на существующий.
- Создайте новую страницу или нажмите «Изменить» на существующей странице.
- Нажмите «Вставить»> «Диск»> «Электронная таблица».
- Выберите электронную таблицу
- Установите параметры
- Нажмите «Сохранить».

v>
Альтернативой является использование Сайтов Google или любого другого редактора контента, который позволяет встраивать контент iframe.
Чтобы встроить электронные таблицы Google на страницу Сайтов Google
- Создайте новый сайт или перейдите на существующий.
- Создайте новую страницу или нажмите при редактировании на существующей странице.
- Нажмите «Вставить»> «Диск»> «Электронная таблица».
- Выберите электронную таблицу
- Установите параметры
- Нажмите «Сохранить».