Как вставить ячейки таблицы Google по одной в слайд Google

Я хочу поместить содержимое ячейки по строкам из разных столбцов в одном листе Google в один слайд Google.

Я нашел это видео от разработчиков Google, но они используют API для обновления слайда , который мне не нужен. В stackoverflow ближайший вопрос здесь, где диапазон листа копируется в слайд.

например этот лист

Столбец A__________ Столбец B_________ Столбец C
Пол______________ Бейкер____________ Нью-Йорк
Джерри______________ Смит____________ Чикаго
Тим_______________ Джонсон__________ Лос-Анджелес

На слайде есть, например, заполнители для {{столбца A}} и {{столбца C}} (мне не нужен B) для каждого из них, например 5x. Теперь скрипт должен заполнять строку за строкой значениями из столбца A и столбца C в слайд до последней строки листа, а оставшиеся заполнители оставлять пустыми.


person zoliverz    schedule 25.12.2018    source источник


Ответы (1)


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

Мы можем сделать это с помощью скрипта Google внутри контейнера электронных таблиц и слайдов. Я выбрал контейнер слайдов с известным идентификатором таблицы:

function addTable() {
  var ssId = '-- spreadsheet ID here --';
  var values = SpreadsheetApp.openById(ssId).getSheetByName('Test').getRange('A1:C3').getValues();
  var table = SlidesApp.getActivePresentation().getSlides()[0].insertTable(values.length, 2);
  for (var i in values) {
    table.getRow(i).getCell(0).getText().appendText(values[i][0]);
    table.getRow(i).getCell(1).getText().appendText(values[i][2]);
  }
}

Таблица - это простейший заполнитель для работы с данными электронных таблиц, и этот базовый пример кода предназначен для этого.

Вы предложили менее очевидный вариант для заполнителей (фигур), например здесь:

введите здесь описание изображения

Учитывая расположение заполнителей вместе со значениями их индексов, мы можем заполнить их импортированными данными с помощью этого вызова функции:

function importData() {
  var ssId = '-- spreadsheet ID --';
  var values = SpreadsheetApp.openById(ssId).getSheetByName('Tabellenblatt2').getRange('A1:C4').getValues();
  var slide = SlidesApp.getActivePresentation().getSlides()[0];
  var shapes = slide.getShapes();
  for (var i in values) {
    shapes[i].getText().setText(values[i][0]);
    shapes[parseInt(i) + 4].getText().setText(values[i][2]);
  }
}
person Александр Ермол&    schedule 25.12.2018
comment
Спасибо за вашу помощь. Надеюсь, мое объяснение было понятно. Я не хочу создавать таблицу в слайдах Google. Просто хочу поместить значения с листа туда, где на слайде есть заполнители. Пробуя ваш код, я получил следующую ошибку: TypeError: Метод getSlides from null не может быть вызван. (ряд 4) - person zoliverz; 26.12.2018
comment
Давайте уточним о существующих заполнителях. Вы имеете в виду элементы страницы, такие как таблица, а не таблицы? (developers.google.com/apps-script/reference/slides/page -элемент) Мы должны знать, как их найти на странице для заполнения данными. Я проверяю приведенный выше код в своем приложении "Слайды", он работает. - person Александр Ермол&; 26.12.2018
comment
Вы имеете в виду что-то вроде этого - docs.google.com презентация / д /? - person Александр Ермол&; 26.12.2018
comment
элемент представляет собой текстовое поле, вот пример drive.google.com/ . как я могу ссылаться на этот слайд, например, в вашем коде? - person zoliverz; 26.12.2018
comment
извините, я сделал его доступным. это точно так, как вы показали это на своем слайде. когда я писал свой комментарий, я не видел вашего комментария несколькими минутами ранее. - person zoliverz; 26.12.2018
comment
Я добавил небольшую функцию в ваше приложение «Слайды» для просмотра индексов текстовых фигур. Из этого кода вы можете увидеть, как получить доступ к этим элементам страницы и изменить их текст. Не оставляйте доступ к редактированию для всех! - person Александр Ермол&; 26.12.2018
comment
Я попробовал, вот папка, но она заполняется заполнители не так, как должно быть. - person zoliverz; 27.12.2018
comment
Я расширил свой ответ, включив в него фигуры в качестве заполнителей. См. Также мои комментарии в документе «Слайды». - person Александр Ермол&; 27.12.2018
comment
спасибо, это отлично работает, когда есть 4 строки. Но сделайте более общий вывод, что он работает для переменного числа строк? - person zoliverz; 27.12.2018
comment
Что вы предпочитаете - добавлять больше фигур на слайд по сценарию или добавлять линии в каждую фигуру? Оба варианта бесполезны, поэтому я начал с таблицы в качестве заполнителя. Но если вы уверены, что этот способ необходим, мы можем решить его и в другом вопросе (слишком много деталей, чтобы включать все здесь, и нам нужно долгое обсуждение, чтобы найти лучшее решение). - person Александр Ермол&; 27.12.2018
comment
Не знаю, как точнее описать свою задачу. Что вы имеете в виду под формой? Я думаю о заполнителе (текстовом поле), содержащем переменную, например заголовок столбца. Но количество заполнителей на слайде для каждого столбца больше, чем ячеек с содержимым в этом столбце. Таким образом, сценарий должен импортировать значения из этого столбца и заполнить текстовые поля, предусмотренные для этого столбца, пока есть строки с содержимым, прежде чем перейти к следующему столбцу и импортировать эти значения. Я думаю, не имеет значения, запускается ли скрипт строка за строкой или столбец за столбцом. - person zoliverz; 27.12.2018
comment
Если вы не понимаете термин «форма», возможно, вы не читали официальную документацию Google - developers.google.com/apps-script/reference/slides/shape. В нашем случае это то же самое, что и текстовое поле. - person Александр Ермол&; 27.12.2018
comment
Из вашего объяснения у меня до сих пор нет идей, что должен делать скрипт. Для простоты рассмотрим 1 столбец данных только с 5 строками данных. На слайде уже есть 4 формы (или текстовые поля). Как скрипт должен распределять 5 значений по 4 фигурам? - person Александр Ермол&; 27.12.2018
comment
хорошо, мы могли бы это сделать. Всегда будет слайд с большим количеством текстовых полей, чем строк. - person zoliverz; 27.12.2018