You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google Slides API多次复制多张幻灯片?

问题:Google Slides API无法复制第三张幻灯片的解决方案

我需要多次复制3张幻灯片(数量可根据演示文稿调整),参考相关方案后发现无法复制第三张幻灯片,当前使用的代码如下:

function duplicateSlide() {
  var presentationId = "1J14grlx5pMrcsglMvmDVB22vTf89Qt0JUaq394Rltfc"; // Please set the Slides ID.
  var pageId1 = "g1399daed6c0_0_89"; // Please set the page ID of the source slide.
  var pageId2 = "g1399daed6c0_0_9"; // Please set the page ID of the source slide.
  var pageId3 = "g1399daed6c0_0_15"; // Please set the page ID of the source slide.
  
  
  var newID1 = ["First_1", "First_2", "First_3", "First_4"]; // Please set the unique ID here.
  var newID2 = ["Second_1A", "Second_2B", "Second_3C", "Second_4D"]; // Please set the unique ID here.
  var newID3 = ["Third_1A1", "Third_2B2", "Third_3C3", "Third_4D4"]; // Please set the unique ID here.

  var requests = newID1.reverse().map(function(id) {
    var obj = {};
    obj[pageId1] = id;
    return {duplicateObject: {objectId: pageId1, objectIds: obj}};
  });
  var requests = newID2.reverse().map(function(id) {
    var obj = {};
    obj[pageId2] = id;
    return {duplicateObject: {objectId: pageId2, objectIds: obj}};
  });
  var requests = newID3.reverse().map(function(id) {
    var obj = {};
    obj[pageId3] = id;
    return {duplicateObject: {objectId: pageId3 , objectIds: obj}};
  });
//  requests.push({deleteObject: {objectId: pageId}});
  Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
}

问题原因

你三次对requests变量重新赋值,前两次生成的复制请求数组被第三次覆盖,最终只有第三张幻灯片的复制请求被执行,前两张的请求全部丢失。

修正后的代码

将三个幻灯片的复制请求数组合并到同一个数组中,确保所有请求都能被批量执行:

function duplicateSlide() {
  var presentationId = "1J14grlx5pMrcsglMvmDVB22vTf89Qt0JUaq394Rltfc"; // 请设置幻灯片ID
  var pageId1 = "g1399daed6c0_0_89"; // 源幻灯片1的ID
  var pageId2 = "g1399daed6c0_0_9"; // 源幻灯片2的ID
  var pageId3 = "g1399daed6c0_0_15"; // 源幻灯片3的ID
  
  var newID1 = ["First_1", "First_2", "First_3", "First_4"]; // 幻灯片1的新ID列表
  var newID2 = ["Second_1A", "Second_2B", "Second_3C", "Second_4D"]; // 幻灯片2的新ID列表
  var newID3 = ["Third_1A1", "Third_2B2", "Third_3C3", "Third_4D4"]; // 幻灯片3的新ID列表

  // 生成幻灯片1的复制请求
  var requests1 = newID1.reverse().map(function(id) {
    var obj = {};
    obj[pageId1] = id;
    return {duplicateObject: {objectId: pageId1, objectIds: obj}};
  });
  // 生成幻灯片2的复制请求
  var requests2 = newID2.reverse().map(function(id) {
    var obj = {};
    obj[pageId2] = id;
    return {duplicateObject: {objectId: pageId2, objectIds: obj}};
  });
  // 生成幻灯片3的复制请求
  var requests3 = newID3.reverse().map(function(id) {
    var obj = {};
    obj[pageId3] = id;
    return {duplicateObject: {objectId: pageId3 , objectIds: obj}};
  });
  
  // 合并所有请求
  var requests = requests1.concat(requests2).concat(requests3);
  
  Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
}

补充说明

  • 使用reverse()是因为复制的幻灯片会插入到源幻灯片之后,倒序生成请求能让新幻灯片的顺序与你定义的新ID列表顺序一致;若不需要该顺序,可移除reverse()
  • 确保所有新ID唯一,避免与现有幻灯片ID冲突

内容的提问来源于stack exchange,提问作者Stephanie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:30:49