Извлечь URL-адрес определенного слайда в презентации с помощью скрипта Google Apps

У меня проблема со скриптом Google Apps. У меня есть слайд-ссылка Google Slides в файле Google Sheets. Я сделал копии обоих файлов и хочу обновить ссылку на слайд на листе новой. Не могли бы вы помочь мне найти решение? Потому что я этого не добился.


person Ant Las    schedule 23.01.2020    source источник


Ответы (2)


С помощью следующего кода вы можете достичь своей цели; то есть вставить в ячейку B5 URL третьего слайда. Вам нужно только вставить в код необходимые идентификаторы и активировать SlidesApp с использованием Resource ⮞ Advanced Google services ⮞ Slides ⮞ On.

function insertSlideURL() {
  var sheet = SpreadsheetApp.openById(
    "{SPREADSHEET ID}").getSheetByName("Sheet1");
  var cell = "B5";
  var presentation = SlidesApp.openById(
    "{PRESENTATION ID}");
  var slides = presentation.getSlides();
  var slide = 3;
  var slideURL = presentation.getUrl() + "#slide=id." + slides[slide - 1]
    .getObjectId();
  sheet.getRange(cell).setValue(slideURL);
}

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

Для получения дополнительных пояснений: я использовал getSlides(), чтобы собрать массив каждого слайда и getObjectId(), чтобы прочитать его идентификатор . Пожалуйста, напишите мне, если вам понадобится дополнительная помощь или дополнительные разъяснения.

person Jacques-Guzel Heron    schedule 24.01.2020
comment
Привет, @AntLas! Если этот или какой-либо ответ помог решить ваш вопрос, пожалуйста, примите его, нажав на галочку. Это показывает широкому сообществу, что вы нашли решение, и дает некоторую репутацию как автору, так и вам. Это не обязательно. - person Jacques-Guzel Heron; 24.01.2020

Вам необходимо создать URL-адрес слайда вручную, используя идентификатор объекта из Slide.getObjectID()

Вот пример, в котором будут регистрироваться URL-адреса для каждого слайда презентации.

function getSlideURLS() {
  var presentation = SlidesApp.getActivePresentation();
  var base_url = presentation.getUrl();

  var slides = presentation.getSlides();
  for(var i in slides){
    var slide_url = base_url+'#slide=id.'+slides[i].getObjectId();
    Logger.log(slide_url);
  }
}
person Cameron Roberts    schedule 23.01.2020
comment
Хорошо, я считаю, что это нормально, но я хотел бы выбрать конкретный слайд, например, в ячейке B5 в листе Google. Я хочу обновить ссылку на слайд номер 3, когда я делаю копию обоих файлов. В приведенном выше коде используется ссылка с последнего слайда. Я пробовал, но у меня ничего не вышло. Есть ли у вас какие-нибудь идеи? Заранее спасибо. - person Ant Las; 23.01.2020
comment
Ничего страшного, я добился своей цели. Теперь пытаюсь поменять гиперссылку по имени - person Ant Las; 23.01.2020
comment
Этот код был просто примером создания URL-адреса для всех слайдов, я обновил ответ, чтобы упомянуть об этом. - person Cameron Roberts; 23.01.2020
comment
Спасибо, добился своей цели! - person Ant Las; 24.01.2020
comment
Можно ли использовать имя вместо номера слайда? - person Ant Las; 27.01.2020
comment
Я использовал эту ссылку в Оглавлении внутри презентации, и она открывает новую копию презентации на связанном слайде. Чтобы оставаться внутри существующего экземпляра, опустите URL-адрес презентации. Просто используйте '# slide = id.' + Slides [i] .getObjectId (); - person aNewb; 21.03.2021