Как видно из названия, я ищу способ установить альтернативное название изображения в слайд-шоу.
В настоящее время это то, что я пробовал, но по некоторым причинам это не кажетсяобновить:
var resource = {"requests": [
{"updatePageElementAltText": {
"objectId": id,
"description": "",
"title": elementTitle
}
}]};
Slides.Presentations.batchUpdate(resource, presentationId);
Возможно, стоит отметить, что скрипт работает в редакторе скриптов на странице Google.Переменные id, elementTitle и presentationId все определены ранее в скрипте, и я проверил их правильность.
Может кто-нибудь определить проблему с этим или предложить более простой способ сделать это?
Редактировать: Танайке помог мне сделать эту специфическую часть сценария работающей, но она не работает на более широкой картине, поэтому это редактирование.
То, что должен делать сценарий, это в основном поиск/ заменить на все элементы изображения в слайд-шоу.
На основе ключей на листе в столбце A следует заменить URL-адрес изображения на соответствующий URL-адрес в столбце B. Затем сценарий циклически перебирает все элементы в слайд-шоу, находит изображения и затем циклически их перебирает.проверить, имеет ли какой-либо из заголовков «ключ» в качестве заголовка.URL-адрес изображения должен быть заменен URL-адресом в той же строке на листе.Эта часть скрипта протестирована и работает, но ключ удаляется из объекта при обновлении URL.Этого не должно происходить, так как позже изображение можно будет заменить снова.
По этой причине я попытался сохранить заголовок перед обновлением URL-адреса и вернуть его с помощью вышеупомянутого batchUpdate,но по какой-то причине он не работает должным образом.
Вот полный сценарий:
function imageReplacer() {
var newPresentationSlides = SlidesApp.openByUrl(myslidesurl).getSlides();
var imageTitles = SpreadsheetApp.openByUrl(mysheeturl).getRange("'Image Replace List'!A2:A").getValues();
var imageURLs = SpreadsheetApp.openByUrl(mysheeturl).getRange("'Image Replace List'!B2:B").getValues();
var presentationId = 'myslidesid';
for (y = 0; y < newPresentationSlides.length; y++) {
var pageElements = newPresentationSlides[y].getPageElements();
for (x = 0; x < pageElements.length; x++) {
for (a = 0; a < imageTitles.filter(String).length; a++) {
if (pageElements[x].getPageElementType() == "IMAGE") {
if(pageElements[x].asImage().getTitle() == imageTitles[a]) {
var elementTitle = pageElements[x].asImage().getTitle();
var id = pageElements[x].getObjectId();
pageElements[x].asImage().replace(imageURLs[a]);
var id = pageElements[x].getObjectId();
var resource = {"requests": [
{"updatePageElementAltText": {
"objectId": id,
"description": "Sample description",
"title": elementTitle
}
}]};
Slides.Presentations.batchUpdate(resource, presentationId);
}
}
}
}
}
}
Как вы можете видеть, средняя часть сценария точно такая же, как предложено tanaike, но он просто не работает должным образом (я даже протестировал эту конкретную часть как отдельный скрипт, и он работал нормально.).
Второе редактирование:
Примеры:
Лист: https://docs.google.com/spreadsheets/d/1npWyONio_seI3bRibFWxiqzHxLZ-ie2wbszgROkLduE/edit#gid=0
Слайды: https://docs.google.com/presentation/d/1rfT7TLD-O7dBbwV5V3UbugN1OLOnBI2-CZN2GPnmANM/edit#slide=id.p