Как следует из названия, я ищу способ установить альтернативный заголовок изображения в слайд-шоу.
В настоящее время это то, что я пробовал, но по какой-то причине он не обновляется:
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