Google apps script 如何使用应用程序脚本更改每页上打印的幻灯片数量
我有一个电子表格,可以通过编程创建包含多张幻灯片的Google幻灯片演示文稿 我想使用应用程序脚本创建这些幻灯片的pdf版本,但每页都有多张幻灯片 我知道如何使用Google apps script 如何使用应用程序脚本更改每页上打印的幻灯片数量,google-apps-script,google-slides-api,Google Apps Script,Google Slides Api,我有一个电子表格,可以通过编程创建包含多张幻灯片的Google幻灯片演示文稿 我想使用应用程序脚本创建这些幻灯片的pdf版本,但每页都有多张幻灯片 我知道如何使用DriveApp.create(blob)获取我的幻灯片的pdf版本,但每页只能制作一张幻灯片 我还知道,我可以访问幻灯片中的“打印设置和预览”设置,以手动实现此功能 不管怎样,我是否可以只用一个脚本来实现这个目标 亲切问候, 布雷特 编辑:为了清晰起见,我附上了我想要的图片。我知道使用幻灯片用户界面是可能的。我想知道是否可以使用应用程
DriveApp.create(blob)
获取我的幻灯片的pdf版本,但每页只能制作一张幻灯片
我还知道,我可以访问幻灯片中的“打印设置和预览”设置,以手动实现此功能
不管怎样,我是否可以只用一个脚本来实现这个目标
亲切问候,
布雷特
编辑:为了清晰起见,我附上了我想要的图片。我知道使用幻灯片用户界面是可能的。我想知道是否可以使用应用程序脚本。
- 您希望在一张幻灯片中总结6张幻灯片,并将幻灯片导出为PDF文件
- 6张幻灯片中的每张幻灯片都是每张幻灯片的图像
- 当幻灯片文件导出为PNG文件时,首页将导出为PNG文件。我用过这个
- 将图像插入幻灯片时,检索大小并更改大小,然后将图像放置到计算位置
- 在这种情况下,临时文件被放入垃圾箱中
col
和row
分别为3和2。你的问题也是这样。如果更改图像大小和分离,请修改wsize
和sep
wsize
是图像的宽度。设置此选项后,将计算高度
function myFunction() {
// Please set these parameters
var id = "### file ID ###"; // file ID of original Slides
var col = 3; // Number of columns
var row = 2; // Number of rows
var wsize = 200; // Size of width of each image (pixels)
var sep = 5; // Space of each image (pexels)
// Create temporary file
var originalFile = DriveApp.getFileById(id);
var tempFile = originalFile.makeCopy();
var idt = tempFile.getId();
// Retrieve slides as images
var s = SlidesApp.openById(idt);
var slides = s.getSlides();
var accessToken = ScriptApp.getOAuthToken();
var baseUrl = "https://docs.google.com/presentation/d/" + idt + "/export/";
var url = baseUrl + "png?access_token=" + accessToken;
var blobs = slides.map(function(e) {
var blob = UrlFetchApp.fetch(url).getBlob();
slides[0].remove();
s.saveAndClose();
s = SlidesApp.openById(idt);
slides = s.getSlides();
return blob;
});
// Put images
var ph = s.getPageHeight();
var pw = s.getPageWidth();
var leftOffset = (pw - ((wsize * col) + (sep * (col - 1)))) / 2;
if (leftOffset < 0) throw new Error("Images are sticking out from a slide.");
var len = col * row;
var loops = Math.ceil(blobs.length / (col * row));
for (var loop = 0; loop < loops; loop++) {
var ns = s.insertSlide(loop);
var topOffset, top;
var left = leftOffset;
for (var i = len * loop; i < len + (len * loop); i++) {
if (i === blobs.length) break;
var image = ns.insertImage(blobs[i]);
var w = image.getWidth();
var h = image.getHeight();
var hsize = h * wsize / w;
if (i === 0 || i % len === 0) {
topOffset = (ph - ((hsize * row) + sep)) / 2;
if (topOffset < 0) throw new Error("Images are sticking out from a slide.");
top = topOffset;
}
image.setWidth(wsize).setHeight(hsize).setTop(top).setLeft(left).getObjectId();
if (i === col - 1 + (loop * len)) {
top = topOffset + hsize + sep;
left = leftOffset;
} else {
left += wsize + sep;
}
}
}
s.saveAndClose();
// Export PDF file
var urlPdf = baseUrl + "pdf?access_token=" + accessToken;
var pdf = UrlFetchApp.fetch(urlPdf).getBlob();
DriveApp.createFile(pdf.setName(originalFile.getName() + ".pdf"));
tempFile.setTrashed(true);
}
函数myFunction(){
//请设置这些参数
var id=“####文件id####”;//原始幻灯片的文件id
var col=3;//列数
var row=2;//行数
var wsize=200;//每个图像的宽度大小(像素)
var sep=5;//每个图像的空间(像素)
//创建临时文件
var originalFile=DriveApp.getFileById(id);
var tempFile=originalFile.makeCopy();
var idt=tempFile.getId();
//以图像形式检索幻灯片
var s=SlidesApp.openById(idt);
var slides=s.getSlides();
var accessToken=ScriptApp.getOAuthToken();
var baseUrl=”https://docs.google.com/presentation/d/“+idt+”/export/”;
var url=baseUrl+“png?access_token=“+accessToken;
var blobs=slides.map(函数(e){
var blob=UrlFetchApp.fetch(url.getBlob();
幻灯片[0]。删除();
s、 saveAndClose();
s=SlidesApp.openById(idt);
slides=s.getSlides();
返回斑点;
});
//放置图像
var ph=s.getPageHeight();
var pw=s.getPageWidth();
var leftOffset=(pw-((wsize*col)+(sep*(col-1))/2;
如果(leftOffset<0)抛出新错误(“图像从幻灯片上突出”);
var len=列*行;
var循环=Math.ceil(blobs.length/(col*row));
for(var loop=0;loop
输入:
这是原始幻灯片。此示例幻灯片共有15张幻灯片
输出:
这是导出的PDF文件
参考资料:
函数myFunction(){
//请设置这些参数
var id=“####文件id####”;//原始幻灯片的文件id
var col=3;//列数
var row=2;//行数
var wsize=200;//每个图像的宽度大小(像素)
var sep=5;//每个图像的空间(像素)
//以图像形式检索幻灯片
var originalFile=SlidesApp.openById(id);
var accessToken=ScriptApp.getOAuthToken();
var pageObjectIds=originalFile.getSlides().map(函数(e){返回e.getObjectId()});
var reqURL=pageObjectId.map(函数(pageObjectId){
返回{
方法:“获取”,
url:“https://slides.googleapis.com/v1/presentations/“+id+”/pages/“+pageObjectId+”/thumbnail?访问令牌=“+accessToken,
};
});
var reqBlobs=UrlFetchApp.fetchAll(requrl).map(函数(
function myFunction() {
// Please set these parameters
var id = "### file ID ###"; // file ID of original Slides
var col = 3; // Number of columns
var row = 2; // Number of rows
var wsize = 200; // Size of width of each image (pixels)
var sep = 5; // Space of each image (pexels)
// Retrieve slides as images
var originalFile = SlidesApp.openById(id);
var accessToken = ScriptApp.getOAuthToken();
var pageObjectIds = originalFile.getSlides().map(function(e) {return e.getObjectId()});
var reqUrls = pageObjectIds.map(function(pageObjectId) {
return {
method: "get",
url: "https://slides.googleapis.com/v1/presentations/" + id + "/pages/" + pageObjectId + "/thumbnail?access_token=" + accessToken,
};
});
var reqBlobs = UrlFetchApp.fetchAll(reqUrls).map(function(e) {
var r = JSON.parse(e);
return {
method: "get",
url: r.contentUrl,
};
});
var blobs = UrlFetchApp.fetchAll(reqBlobs).map(function(e) {return e.getBlob()});
// Create a temporary Slides and put images
var s = SlidesApp.create("temporarySlides");
s.getSlides()[0].remove();
var idt = s.getId();
var ph = s.getPageHeight();
var pw = s.getPageWidth();
var leftOffset = (pw - ((wsize * col) + (sep * (col - 1)))) / 2;
if (leftOffset < 0) throw new Error("Images are sticking out from a slide.");
var len = col * row;
var loops = Math.ceil(blobs.length / (col * row));
for (var loop = 0; loop < loops; loop++) {
var ns = s.insertSlide(loop);
var topOffset, top;
var left = leftOffset;
for (var i = len * loop; i < len + (len * loop); i++) {
if (i === blobs.length) break;
var image = ns.insertImage(blobs[i]);
var w = image.getWidth();
var h = image.getHeight();
var hsize = h * wsize / w;
if (i === 0 || i % len === 0) {
topOffset = (ph - ((hsize * row) + sep)) / 2;
if (topOffset < 0) throw new Error("Images are sticking out from a slide.");
top = topOffset;
}
image.setWidth(wsize).setHeight(hsize).setTop(top).setLeft(left).getObjectId();
if (i === col - 1 + (loop * len)) {
top = topOffset + hsize + sep;
left = leftOffset;
} else {
left += wsize + sep;
}
}
}
s.saveAndClose();
// Export PDF file
var urlPdf = "https://docs.google.com/presentation/d/" + idt + "/export/" + "pdf?access_token=" + accessToken;
var pdf = UrlFetchApp.fetch(urlPdf).getBlob();
DriveApp.createFile(pdf.setName(originalFile.getName() + ".pdf"));
DriveApp.getFileById(idt).setTrashed(true);
}