Скопируйте слайд из одной презентации Google в другую - PullRequest
2 голосов
/ 08 апреля 2019

Я пытаюсь скопировать слайды из исходной презентации и добавить их в конец целевой презентации.Я искал решение на SO, но они используют скрипт приложений Google.Я ищу решение, в котором можно использовать Google REST API для слайдов или Google Drive.До сих пор я пытался получить каждый элемент слайдов исходной презентации и использовать пакетные обновления, чтобы добавить их в целевую презентацию, но, очевидно, это утомительно и не охватывает все случаи.У кого-нибудь есть какие-нибудь возможные способы выполнить эту задачу?Заранее спасибо.

1 Ответ

2 голосов
/ 09 апреля 2019

К сожалению, на данном этапе пока нет методов прямого копирования слайда (это как метод copyTo of Sheets API.) В другие Google Slides. Поэтому, чтобы скопировать слайд на другие слайды, я думаю, что есть 2 обходных пути.

  1. После получения всех объектов и форматов на слайде методом get, создайте новый слайд и поместите объекты с помощью метода batchUpdate.
  2. Создайте API с помощью Google Apps Script, поскольку у службы слайдов в GAS есть метод прямого копирования слайда.

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

При использовании этого сценария выполните следующий поток действий.

Поток приготовления

  1. Войдите в Google Drive. https://drive.google.com/drive/my-drive
  2. Создание нового автономного проекта.
  3. Задайте имя проекта, скопируйте и вставьте следующий пример сценария.
  4. Развертывание веб-приложений.
    1. В редакторе сценариев откройте диалоговое окно с помощью «Опубликовать» -> «Развернуть как веб-приложение».
    2. Выберите «Я» для «Выполнить приложение как:».
    3. Выберите «Любой, даже анонимный» для «У кого есть доступ к приложению:».
    4. Нажмите кнопку «Развернуть» как новую «Версия проекта».
    5. Автоматически открывать диалоговое окно «Требуется авторизация».
      1. Нажмите «Просмотреть разрешения».
      2. Выберите собственную учетную запись.
      3. Нажмите «Дополнительно» на «Это приложение не подтверждено».
      4. Нажмите «Перейти к ### имени проекта ### (небезопасно)»
      5. Нажмите кнопку «Разрешить».
    6. Скопируйте "URL текущего веб-приложения:".
    7. Нажмите «ОК».

Благодаря этому потоку веб-приложения были развернуты как собственный API. В этом примере в качестве теста использовался «Любой, даже анонимный» для «У кого есть доступ к приложению:». Если вы хотите использовать токен доступа, пожалуйста, измените его. Подробную информацию вы можете увидеть ниже в разделе «Рекомендации».

Пример сценария

Сценарий Google Apps:

function doGet(e) {
  var srcId = e.parameters.srcId;
  var dstId = e.parameters.dstId;
  var srcPage = e.parameters.srcPage;
  var srcSlide = SlidesApp.openById(srcId);
  var dstSlide = SlidesApp.openById(dstId);
  var copySlide = srcSlide.getSlides()[srcPage - 1];
  dstSlide.appendSlide(copySlide);
  return ContentService.createTextOutput("Done.");
}

команда curl:

После развертывания веб-приложений вы можете использовать веб-приложения в качестве собственного API. Пример скручивания для запроса к развернутым веб-приложениям выглядит следующим образом.

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

curl -GL \
  -d "srcId=### fileId of source Slides ###" \
  -d "dstId=### fileId of destination Slides ###" \
  -d "srcPage=1" \
  "https://script.google.com/macros/s/#####/exec"

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

Ссылки

...