Вставить таблицу электронных таблиц в Google Doc с Apps-скрипт - PullRequest
0 голосов
/ 05 июля 2019

Мне интересно, есть ли способ встроить таблицу в документ Google, используя скрипт приложения.

Я знаю, что вы можете сделать это, скопировав / вставив таблицу в документ Google, но есть ли способ сделать это с помощью скрипта приложений?

Редактировать

Используя ответы @Cooper и @Alberto Molina, я придумал следующий код, он импортирует и вставляет таблицу

var sheet = SpreadSheetApp.openById("").getSheets()[0];
var docBody = DocumentApp.openById("").getBody();
var values = sheet.getDataRange().getValues();
var elem = docBody.findText("").getElement();  
var parent = elem.getParent();
var idx = docBody.getChildIndex(parent);
docBody.insertTable(++idx, values);

Этот код вставляет "сырую" таблицу примерно так Изображение

Я хочу, чтобы изменения в исходной таблице влияли на таблицу в документе Google. В общем, я хочу вставить это так: Изображение

Идея, которая у меня есть в данный момент:

docBody.insertTable(++idx, values).setLinkUrl(**???**);

Но я не знаю, как установить URL на

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Попробуйте это:

Это происходит в Code.gs в редакторе сценариев документов и открывает другую электронную таблицу для получения данных.

function addNewTable() {
  var data=SpreadsheetApp.openById("SpreadsheetId").getSheetByName('SheetName').getDataRange().getValues();
  var doc=DocumentApp.getActiveDocument();//run from active document
  doc.getBody().appendTable(data);
}

Изображение данных из SpreadSheet:

enter image description here

Изображение таблицы в документе:

enter image description here

0 голосов
/ 05 июля 2019

Попробуйте этот код:

function table(){
  var ss = SpreadSheetApp.getCurrentSheet();
  var doc = DocumentApp.create('Sample Document'); // Or find one by name/ID
  var body = doc.getBody();

  var dataYouWant = ss.getRange("A1:D4").getValues(); // stores a 2D array with the values
  table = body.appendTable(dataYouWant); // pastes table in doc

  table.getRow(0).editAsText().setBold(true); // Example of how to edit table, this sets the header bold.
}

Поскольку вы не предоставили ни одного существующего кода или особенностей, это очень широкое решение. Но в сущности вам нужно получить значения (в 2D-массиве), а затем вставить их в тело документа с помощью appendTable().

Вот некоторая документация по использованию документов через GAS. Вот некоторая документация по классу, который обрабатывает таблицы Дока.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...