我想在 Google Script 中从本地 Google Drive 上的图像文件夹中创建 Google Slides 演示文稿。我想单独标记每个,以便在演示文稿中给它们一个特定的顺序,并附加一个布尔值以供以后使用。
我首先尝试改编 Google Developers 视频中示例中的代码: https ://www.youtube.com/watch?v=rTDz-Zcn7yk 。
这行得通,但他只是暗示能够显示来自个人 Google Drive 的图像,而无需解释如何。
然后,我尝试将 Google Developer 的代码与 Learn Google Spreadsheets 视频创建的代码相结合:https ://www.youtube.com/watch?v=PTOKHjVkXYs 。
在这里,他试图创建一个电子表格,其中包含来自本地 Google 驱动器文件夹中的信息,该文件夹包含图像。这让我更接近答案,但我在尝试将文件夹的图像传递到数组中并将它们传递给 .insertImage(); 时遇到了类似的麻烦。
这是我试图通过尝试将这两者结合起来创建的代码。我假设我没有从我的 getMyFiles 函数中检索正确的数据并将它们复制到我的 AfileLabels 数组中。也许它应该使用 .get 而不是 .getName ,它可以从我的本地驱动器返回 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);
}
我错误地使用了哪些功能?如何将我的图像数组传递给图像?