如何修改Google Apps Script实现谷歌幻灯片1920×1080适配网格?
修复Google Apps Script实现1920×1080幻灯片的矩形网格完美适配
以下是修改后的脚本,可确保无论调整边距、行列数,矩形网格都能完美适配带20px外边距的1920×1080幻灯片:
function createGrid() { // 目标幻灯片尺寸:1920×1080 const SLIDE_WIDTH = 1920; const SLIDE_HEIGHT = 1080; const MARGIN = 20; const numRows = 4; const numColumns = 5; // 可按需修改行列数 const MAX_WIDTH_RATIO = 0.2; // 矩形宽度不超过可用宽度的20% // 计算可用区域(减去上下左右外边距) const availableWidth = SLIDE_WIDTH - 2 * MARGIN; const availableHeight = SLIDE_HEIGHT - 2 * MARGIN; // 计算矩形宽度的两个限制值,取较小值 const maxAllowedWidth = availableWidth * MAX_WIDTH_RATIO; const widthByColumns = (availableWidth - MARGIN * (numColumns - 1)) / numColumns; const rectWidth = Math.min(maxAllowedWidth, widthByColumns); // 计算矩形高度:确保网格在可用高度内适配 const rectHeight = (availableHeight - MARGIN * (numRows - 1)) / numRows; // 获取当前演示文稿并添加新幻灯片 const presentation = SlidesApp.getActivePresentation(); const slide = presentation.appendSlide(); slide.selectAsCurrentPage(); // 设置幻灯片尺寸为1920×1080(避免默认尺寸不符) slide.getPageProperties().setPageSize(SlidesApp.PageSize.CUSTOM, SLIDE_WIDTH, SLIDE_HEIGHT); // 生成矩形网格 for (let row = 0; row < numRows; row++) { for (let column = 0; column < numColumns; column++) { // 计算每个矩形的坐标:外边距 + 列/行的偏移(宽度/高度 + 间距) const x = MARGIN + column * (rectWidth + MARGIN); const y = MARGIN + row * (rectHeight + MARGIN); const shape = slide.insertShape(SlidesApp.ShapeType.RECTANGLE, x, y, rectWidth, rectHeight); shape.getBorder().setTransparent(); shape.getFill().setSolidFill('#777777'); } } }
关键修改说明
- 固定幻灯片尺寸:明确将幻灯片设置为1920×1080,避免默认尺寸导致的适配偏差,通过
setPageSize方法实现。 - 修正可用区域计算:基于幻灯片实际尺寸减去双边距,得到真实可放置网格的区域,替代原脚本中硬编码的非目标尺寸。
- 修复最大宽度限制逻辑:原脚本错误使用整个幻灯片宽度计算最大宽度,现在改为使用可用宽度(幻灯片宽度减去左右边距)的20%,符合需求描述。
- 动态适配参数变化:无论调整
numRows、numColumns或MARGIN值,都会重新计算矩形的宽高和位置,确保网格完全在幻灯片边距内,不会超出范围。 - 优化代码可读性:将固定参数改为大写常量,便于后续修改维护。
内容的提问来源于stack exchange,提问作者user14915635
相关产品推荐
相关产品推荐

