Я хотел бы создать презентацию Google Slides из папки с изображениями на моем локальном диске Google в рамках скрипта Google. Я хочу пометить каждый из них по отдельности, чтобы дать им определенный порядок в презентации и прикрепить логическое значение для последующего использования.
Сначала я попытался адаптировать код из примера в видео Google Developers: https://www.youtube.com/watch?v=rTDz-Zcn7yk.
Это работает, но он просто намекает на возможность показа изображений с личного диска Google без объяснения того, как.
Затем я попытался объединить код разработчика Google с кодом, созданным видео Learn Google Spreadsheets: https://www.youtube.com/watch?v=PTOKHjVkXYs.
Здесь он пытается создать электронную таблицу с информацией. из локальной папки Google drive, содержащей изображения. Это приблизило меня к ответу, но я столкнулся с подобной проблемой, пытаясь передать изображения папки в массив и передать их через .insertImage ();
Вот код, который я пытался создать, пытаясь объединить эти двое. Я предполагаю, что не получаю правильные данные из моей функции getMyFiles и не копирую их в мой массив AfileLabels. Возможно, вместо .getName следует использовать .get, который может вернуть imageUrl с моего локального диска, но я не знаю, как это сделать. Я также не могу передать этот массив в мою последнюю строку: images.forEach (addImageSlide) ;. Я также уверен, что есть гораздо более простой способ создания моих массивов fileLabel, чем итеративное их создание, как я, но я не знаю, как это сделать.
var NAME = "My Presentation";
var deck = SlidesApp.create(NAME);
function getMyFiles() {
var myFolders = DriveApp;
var i = 0;
var j = 0;
var AfileLabels = new Array();
var AfileLabels = [];
var BfileLabels = new Array();
var BfileLabels = [];
var AfolderIter = myFolders.getFoldersByName("A");
var Afolder = AfolderIter.next();
var AfolderIter = Afolder.getFiles();
while(AfolderIter.hasNext()) {
var Afile = AfolderIter.next();
var AfileName = Afile.getName();
Logger.log(AfileName);
AfileLabels[i] = AfileName;
i++;
}
var i = 0;
Logger.log(AfileLabels);
var BfolderIter = myFolders.getFoldersByName("B");
var Bfolder = BfolderIter.next();
var BfolderIter = Bfolder.getFiles();
while(BfolderIter.hasNext()) {
var Bfile = BfolderIter.next();
var BfileName = Bfile.getName();
Logger.log(BfileName);
BfileLabels[i] = BfileName;
j++;
}
var j = 0;
Logger.log(BfileLabels);
}
function addImageSlide(AfileLabels, index) {
var slide = presentation.appendSlide(SlidesApp.PredefinedLayout.BLANK);
var image = slide.insertImage(AfileLabels);
var imgWidth = image.getWidth();
var imgHeight = image.getHeight();
var pageWidth = presentation.getPageWidth();
var pageHeight = presentation.getPageHeight();
var newX = pageWidth/2. - imgWidth/2.;
var newY = pageHeight/2. - imgHeight/2.;
image.setLeft(newX).setTop(newY);
}
function main() {
var AfileLabels = new Array();
var AfileLabels = [];
var AfileLabels = getMyFiles();
Logger.log(AfileLabels);
var images = ASfileLabels;
var [title, subtitle] = deck.getSlides()[0].getPageElements();
title.asShape().getText().setText(NAME);
subtitle.asShape().getText().setText("Subtitle for Presentation");
images.forEach(addImageSlide);
}
Какие функции я использую неправильно ? Как передать массив изображений в изображения?