Копирование нескольких слайдов с мастер-слайдов с помощью скрипта Google Apps - PullRequest
1 голос
/ 12 февраля 2020

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

function PoD() {

  SpreadsheetApp.getActiveSpreadsheet().getSheetByName("A-PoD").activate();

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lr = ss.getLastRow()

  for (var i =2;i<lr;i++){

    if(ss.getRange(i, 1).getValue()){

  //Make a copy of the template file
  var documentId = DriveApp.getFileById('1REHMrl6kfzXbgSipvBDkNitkfsM8tJsUSAICggxNsHw').makeCopy().getId();

  var Name_of_programme = ss.getRange(i, 2).getValue();

  DriveApp.getFileById(documentId).setName("PwC's Academy_"+Name_of_client+"_"+Name_of_programme+"_"+Month);

  var FileName = Name_of_programme;

  //Get the document body as a variable
  var body = SlidesApp.openById(documentId);

  body.replaceAllText('{Name of programme}', Name_of_programme);


  var lastSlide = body.getSlides();
  lastSlide[5].remove();

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

var srcPresentationId = "### source fileId ###";
var copysrcSlideIndex = 0; // 0 means page 1.

var copydstSlideIndex = 0; // 0 means page 1.

var src = SlidesApp.openById(srcPresentationId).getSlides()[copysrcSlideIndex];
SlidesApp.getActivePresentation().insertSlide(copydstSlideIndex, src);

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

В конце скрипта мне нужно сопоставить названия слайдов с номерами слайдов? или может иметь уникальную ссылку в текстовом поле на каждом слайде, а затем выбрать соответствующий слайд? Мысли здесь вслух. Любое руководство будет оценено.

1 Ответ

2 голосов
/ 13 февраля 2020
  • Вы хотите скопировать 5, 7 и 9 страниц (индексы 4, 6 и 8) в основных Google Slides в другие Google Slides.
  • Вы хотите добиться этого с помощью Google Apps Script.

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

Поток:

  1. Извлечение всех слайдов из мастер-слайдов Google.
  2. Скопируйте нужный слайд в Google Slides в l oop.

Шаблон 1:

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

Перед запуском сценария установите переменные.

function myFunction() {
  var copyPageNumbers = [5, 7, 9];  // Please set the page number. This is not the index. So the 1st page is 1.
  var masterGoogleSlidesId = "###";  // Please set the master Google Slides ID.
  var destinationGoogleSlidesId = "###";  // Please set the destination Google Slides ID.
  var offset = 1;

  var src = SlidesApp.openById(masterGoogleSlidesId);
  var dst = SlidesApp.openById(destinationGoogleSlidesId);
  var slides = src.getSlides();
  var page = 0;
  slides.forEach(function(slide, i) {
    if (copyPageNumbers.indexOf(i + 1) != -1) {
      dst.insertSlide(offset + page, slide);
      page++;
    }
  });
}

Шаблон 2:

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

function myFunction() {
  var copyPageNumbers = [5, 7, 9];  // Please set the page number. This is not the index. So the 1st page is 1.
  var masterGoogleSlidesId = "###";  // Please set the master Google Slides ID.
  var destinationGoogleSlidesId = "###";  // Please set the destination Google Slides ID.
  var offset = 1;

  var src = SlidesApp.openById(masterGoogleSlidesId);
  var dst = SlidesApp.openById(destinationGoogleSlidesId);
  var slides = src.getSlides();
  copyPageNumbers.forEach(function(p, i) {
    dst.insertSlide(offset + i, slides[p - 1]);
  });
}

Примечание:

  • В обоих шаблонах страницы 5, 7 и 9 основных слайдов Google скопированы со 2-й страницы в целевые слайды Google.
    • Когда используется var offset = 0, страницы 5, 7 и 9 мастер-слайдов Google копируются с 1-й страницы назначения Google Slides.

Ссылка:

...