Установите определенный идентификатор для слайда

У меня есть основной документ Google Slides, из которого я копирую определенные слайды в другой документ Google Slides. Но когда я копирую слайд, я хочу присвоить ему определенный идентификатор (e.g. Slide_num-001).

Я делаю это, копируя слайд, затем дублирую копию с нужным идентификатором, а затем удаляю копию. Это работает, но я думаю, что это далеко не идеальное решение.

Не могли бы вы помочь мне, если есть лучший способ сделать это? Я не смог найти для этого никакой функции, например, setObjectID().


person Martin    schedule 02.02.2021    source источник


Ответы (1)


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

Я рекомендую вместо этого создать словарь, который содержит пару Slide_num-<number> и идентификатор слайда.

Я создал пример кода, который использует эту идею.

Код:

function setDictionary() {
  // I have 5 slides as sample
  var presentation = SlidesApp.getActivePresentation();
  var slides = presentation.getSlides();
  var dictionary = {};

  // Set Object ID as value to key "Slide_num-<number>"
  slides.forEach(function (slide, index) {
    dictionary["Slide_num-" + padLeadingZeros(index + 1, 3)] = slide.getObjectId();
  });
  // In your case, after copying the slide, assign the value "slide.getObjectId()" to the key "Slide_num-<number>"

  // Sample: 
  // Sets 5th slide background to red 
  var slide = presentation.getSlideById(dictionary["Slide_num-005"]);
  Logger.log(slide.getBackground().setSolidFill(255,0,0));
}

function padLeadingZeros(num, size) {
  // Function that appends 0s to the number based on the size
  // Returns "001" when num is "1" and size is "3"
  var s = num + "";
  while (s.length < size) {
    s = "0" + s;
  } 
  return s;
}

Преимущество этого заключается в том, что он уменьшает количество вызовов API, что делает его более независимым от API.

См. ссылку на доступный список методов для слайда класса.

Справка:

Я искренне извиняюсь, если это не то решение, которое вы хотели/нужно.

person NaziA    schedule 02.02.2021
comment
Большое спасибо за ваш ответ и информацию. Я новичок в вещах для разработчиков Google, поэтому это было очень полезно. Мне очень нравится ваша идея, я думаю, что это отличный способ ее обойти. Я внедрим его в свой скрипт, так как он намного лучше моего решения. Еще раз спасибо, очень признателен. - person Martin; 03.02.2021
comment
Привет @Martin, спасибо за высокую оценку. Сообщество Stackoverflow будет очень радо помочь вам с такими проблемами. Удачи тебе с твоим проектом. - person NaziA; 03.02.2021