Вставить электронную таблицу Google в документ Google

Можно ли встроить электронную таблицу Google в документ Google а-ля Microsoft Excel и Microsoft Word? Как насчет диаграммы из электронной таблицы?


С сегодняшнего дня (20 мая 2016 г.) Google начинает развертывать возможность встраивать диаграмму из электронной таблицы Google в документ Google. На данный момент в двух из трех моих учетных записей Google этот параметр доступен в меню Вставить с новым подменю Вставить → Диаграмма под Вставить → Рисунок… элемент.

Когда вы вставляете такие диаграммы, они остаются связанными с исходной электронной таблицей. Если все, что вам нужно, это табличные данные, есть тип табличной диаграммы, который можно использовать для представления данных в виде простой таблицы.

На этом этапе есть некоторые ограничения (например, в отношении размера диаграммы ), а диаграмма должна существовать в электронной таблице, прежде чем вы сможете ее вставить, но это идет в правильном направлении…


Чтобы вставить электронную таблицу или таблицу, используйте Добавить таблицу из Google Таблиц путем копирования и вставки из Таблиц в Документы и выберите связанный параметр.

Диаграмма не обновляется в реальном времени, если вы изменяете исходную электронную таблицу, пока вы документ открыт, однако документ обнаружит изменения и даст вам кнопку Обновить над встроенной таблицей, чтобы отразить последние изменения в источнике.


32

AFAIK, вы можете только копировать и вставлять из электронной таблицы в текстовый документ. Электронная таблица вставлена ​​как таблица, но они не связаны: если вы измените что-то в электронной таблице, это не отразится в текстовом документе.

Конечно, мне бы очень хотелось будет доказано, что ошиблись!

Поделиться
Улучшите этот ответ
ответил 06 июля ’10 в 19:22
  • 1
    К сожалению, на данный момент это мой единственный вариант. — эль, 07 июля 2010 г., 13:33
  • 1
    См. мой ответ ниже, теперь есть новая опция, которая делает это немного удобнее и обеспечивает динамические обновления. — Жан-Рене Бувье 20 мая ’16 в 8:44
добавить комментарий |

AFAIK, вы можете только копировать и вставлять из электронной таблицы в текстовый документ. Электронная таблица вставляется как таблица, но они не связаны: если вы измените что-то в электронной таблице, это не отразится в текстовом документе..

Конечно, я бы очень хотел, чтобы меня доказали, что он неправ!


11

Вот решение на основе сценария, которое позволяет вставлять таблицу с содержимым из заданного диапазона в заданную электронную таблицу. Я не пытался найти способ синхронизации данных в реальном времени, так как это казалось непрактичным, учитывая потенциально большой объем данных, который необходимо было бы передавать при каждом редактировании электронной таблицы. Вместо этого сценарий добавляет в документ настраиваемый пункт меню «обновить данные».

Скрипт должен быть привязан к документу (т.е. создан с помощью Инструменты> Редактор скриптов в меню документа). 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 ());}  

Технические примечания

  1. Также возможно синхронизировать данные каждый час в дополнение к ручной. Просто добавьте основанный на времени триггер из меню Ресурсы редактора сценариев, чтобы он запускал функцию updateData.

  2. Можно также адаптировать этот сценарий для привязки к исходную электронную таблицу. Для этого потребуется изменить способ открытия документа (например, по URL-адресу), но в остальном логика остается той же.

  3. Громоздкая часть скрипта — это получение дескриптора существующей таблицы в документе. Для этого необходимо поместить его в именованный диапазон. Кроме того, гораздо целесообразнее полностью заменить элемент таблицы, чем возиться с записями существующей таблицы. Поскольку именованный диапазон неизменяем, он также удаляется вместе с таблицей, которую он содержит, а затем создается снова вместе с новой таблицей.

Поделиться
Улучшите этот ответ
отредактировано 9 августа 2015 в 07:13
ответил 9 августа 2015 в 18:59
  • Отлично работает. Есть ли способ получить форматирование (в частности, цвета фона ячеек)? — 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 ());}  

Технические примечания

  1. Также возможно синхронизировать данные каждый час в дополнение к ручной. Просто добавьте основанный на времени триггер из меню Ресурсы редактора сценариев, чтобы он запускал функцию updateData.

  2. Можно также адаптировать этот сценарий для привязки к исходную электронную таблицу. Для этого потребуется изменить способ открытия документа (например, по URL-адресу), но в остальном логика остается той же.

  3. Громоздкая часть скрипта — это получение дескриптора существующей таблицы в документе. Для этого необходимо поместить его в именованный диапазон. Кроме того, гораздо целесообразнее полностью заменить элемент таблицы, чем возиться с записями существующей таблицы. Поскольку именованный диапазон неизменяем, он также удаляется вместе с таблицей, которую он содержит, а затем создается снова вместе с новой таблицей.


5

Да, можно. Скопируйте содержимое листа и вставьте его в свой документ, в правом углу он спросит, хотите ли вы сделать ссылку на электронную таблицу. Если вы это сделаете, после редактирования электронной таблицы вы можете щелкнуть значок обновления в своих документах, чтобы внести изменения в ваш документ.

Поделиться
Улучшить этот ответ
ответил 23 дек. ’17 в 13:35
  • По состоянию на начало 2018 года это лучший ответ на часть вопроса, касающуюся вставки таблицы Google Sheet в Документ Google. — dlukes 12 янв., 13:06
  • И насколько я могу судить, причина, по которой я нашел этот поток, заключается в том, что он ограничен 400 ячейками. — TC76 14 авг. ’19 в 20:01
добавить комментарий |

Да, можно. Скопируйте содержимое листа и вставьте его в свой документ, в правом углу он спросит, хотите ли вы сделать ссылку на электронную таблицу. Если вы это сделаете, после редактирования электронной таблицы вы можете щелкнуть значок обновления в своих документах, чтобы внести изменения в ваш документ.


3

Альтернативой является использование Сайтов Google или любого другого редактора контента, который позволяет встраивать контент iframe.

Встраивать Таблицы Google на странице Сайтов Google

  1. Создайте новый сайт или перейдите на существующий.
  2. Создайте новую страницу или нажмите «Изменить» на существующей странице.
  3. Нажмите «Вставить»> «Диск»> «Электронная таблица».
  4. Выберите электронную таблицу
  5. Установите параметры
  6. Нажмите «Сохранить».
Поделиться
Улучшите этот ответ
ответил 5 августа 2015, 22:28

v>

комментировать |

Альтернативой является использование Сайтов Google или любого другого редактора контента, который позволяет встраивать контент iframe.

Чтобы встроить электронные таблицы Google на страницу Сайтов Google

  1. Создайте новый сайт или перейдите на существующий.
  2. Создайте новую страницу или нажмите при редактировании на существующей странице.
  3. Нажмите «Вставить»> «Диск»> «Электронная таблица».
  4. Выберите электронную таблицу
  5. Установите параметры
  6. Нажмите «Сохранить».
Оцените статью
Botgadget.ru
Добавить комментарий