Есть ли способ (или обходной путь) добавить таблицы из Google Sheets в презентацию Google Slides с помощью скрипта приложения?

Я новичок в скриптах приложений и кодировании в целом.

Я написал сценарий, который использует триггер «отправки формы» для создания новой папки на моем диске, копирования трех (3) файлов шаблонов и размещения их туда:

  • Два (2) из ​​них - электронные таблицы, а другой - презентация слайдов.

У меня есть таблицы в электронных таблицах, которые я хочу встроить и автоматически обновить в презентации.

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

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

Какие-либо другие обходные пути, которые могут отсутствовать?

Моя группа выполняет этот процесс где угодно 8-30 раз в день, поэтому любой способ автоматизировать эту часть поможет сэкономить много времени!

Спасибо!


comment
Добро пожаловать! Пожалуйста, обратитесь к как задать вопрос при предоставлении подробностей по вашим вопросам.   -  person segFault    schedule 17.02.2020
comment
смотрит на это; developers.google.com/slides/reference/ отдых / v1 /   -  person Cooper    schedule 18.02.2020
comment
Также есть некоторые дополнения, которые могут облегчить эту деятельность. Один называется SlidesMerge, и я думаю, что он написан Брюсом Макферсоном, но я не видел его в Addon Market Place.   -  person Cooper    schedule 18.02.2020
comment
Не могли бы вы предоставить сценарий, который у вас есть? Это написано в Apps Script?   -  person Aerials    schedule 18.02.2020


Ответы (1)


Таблица из таблицы в слайд

function putTablesIntoSlides() {
  var pr=SlidesApp.openById('Presentation Id');
  var slide1_ObjectId=pr.getSlides()[1].getObjectId();//I was adding the table to slide[1];
  Logger.log(slide1_ObjectId);
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet10');
  var rg=sh.getDataRange();
  var v=rg.getValues();
  //Create a table the size comes from Spreadsheet Data
  var request1={"createTable": {"elementProperties":{"pageObjectId": slide1_ObjectId},"rows": v.length,"columns": v[0].length}};
  var resp1=Slides.Presentations.batchUpdate({requests:request1}, pr.getId());
  //Setting up the data for adding text to the above table.
  var request2=[];
  for(var i=0;i<v.length;i++) {
    for(var j=0;j<v[i].length;j++) {
      request2.push({"insertText":{"objectId":resp1.replies[0].createTable.objectId,"cellLocation": {"rowIndex":i,"columnIndex":j},"text": v[i][j].toString()}});
    }
  }
  //Add test to all of the table cells
  var resp2=Slides.Presentations.batchUpdate({requests:request2}, pr.getId());
  Logger.log(JSON.stringify(resp1));   
}

Это данные моей таблицы:

HDR1 HDR6 HDR2 HDR5 HDR4 HDR7 HDR8 HDR3
5 7 2 6 4 3 1 0
7 4 8 2 3 1 7 8
5 7 5 0 0 9 1 2
2 4 9 9 7 3 7 2
1 0 3 3 5 3 9 7
3 7 8 3 2 4 1 8
5 8 6 3 1 1 8 4
3 1 7 7 1 5 7 5
9 6 3 6 8 6 9 8
5 4 9 6 2 3 3 4

API Google Slides

SlidesApp

person Cooper    schedule 18.02.2020
comment
Это написано в Google App Script? 11-я строка var resp1 = Slides.Presentations.batchUpdate, похоже, не работает. Используется ли это приложение SlidesApp? Или слайды - это предопределенная переменная? - person Adam A; 09.03.2020
comment
Вам необходимо включить Slides API с помощью ресурсов / расширенных служб Google. Ознакомьтесь с отзывами - person Cooper; 09.03.2020
comment
Спасибо за совет. Технически это работает, но форматирование далеко, и таблица не подходит для размещения на слайде. Есть ли способ просто сделать таблицу в слайдах Google, а затем вытащить значения из электронной таблицы и просто поместить их в ячейки на слайде? Это устранило бы проблемы с форматированием. Спасибо за быстрый ответ! - person Adam A; 09.03.2020
comment
@Adam A Пытался использовать вышеуказанное в существующей таблице, но возникла ошибка: Недействительные запросы [0] .insertText: объект (SLIDES_API1834905201_1) не может быть найден. Это id слайда с таблицей ??? пусть templatePres = SlidesApp.openById (templatePresId); пусть slidesArr = templatePres.getSlides (); пусть templateSlideId = slidesArr [0] .getObjectId (); пусть tblArr = slidesArr [0] .getTables (); пусть theTblId = tblArr [0] .getObjectId (); // элемент страницы таблицы Код для insertText включает идентификатор объекта таблицы, а updateBatch имеет идентификатор презентации, но идентификатор слайда нигде? - person aNewb; 19.07.2021