Google 幻灯片 API-如何多次复制一张幻灯片并每次都创建一个唯一的对象 ID
Google Slide API-How do i duplicate a slide several times and creating a unique object id each time
一般来说,我希望人们将一些数据放入 google sheet 并提供一个按钮,该按钮获取数据并自动填充预制的 google 幻灯片。我选择了复制母版幻灯片然后用数据替换单个文本模块的方法。有没有更好的方法来实现我的目标?
这是母版幻灯片
这是我用于复制的代码,但它只能复制母版幻灯片一次,因为它创建的 objectId 始终相同:"copiedSlide_001"。我试图为 objectId 使用一个随机整数,但我没有让它工作。另外,我想该名称必须是可预测的才能在下一步中使用。 (将数据导入到新复制的幻灯片中)。
function duplicateSlide() {
var presentationId = "1XLtOv7FHWwv6R2QEZF_LEhF7twXTlY3IbvsVDKxdDtc";
var pageId = "g75e5d89173_0_0"
var requests = [{
"duplicateObject": {
"objectId": pageId,
"objectIds": {
"g75e5d89173_0_0": "copiedSlide_001",
}
}
} ]Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
}
如何让复制过程对我有利?
非常感谢任何帮助!
- 您想在 Google 个幻灯片中多次复制母版幻灯片。
- 您想为每个复制的幻灯片提供唯一的对象 ID,如
copiedSlide_001
。
- 在复制之前,您需要知道所复制幻灯片的对象 ID。
- 您想使用 Google Apps 脚本实现此目的。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
- 在这个修改中,它使用batchUpdate的方法请求了几个DuplicateObjectRequest。
修改后的脚本:
在您 运行 脚本之前,请在高级 Google 服务中启用幻灯片 API。
function duplicateSlide() {
var presentationId = "1XLtOv7FHWwv6R2QEZF_LEhF7twXTlY3IbvsVDKxdDtc"; // Please set the Slides ID.
var pageId = "g75e5d89173_0_0"; // Please set the page ID of the source slide.
var newIDs = ["copiedSlide_001", "copiedSlide_002", "copiedSlide_003"]; // Please set the unique ID here.
var requests = newIDs.reverse().map(function(id) {
var obj = {};
obj[pageId] = id;
return {duplicateObject: {objectId: pageId, objectIds: obj}};
});
// requests.push({deleteObject: {objectId: pageId}});
Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
}
- 当你运行脚本时,作为测试用例,源幻灯片被复制了3次。每个对象ID分别为"copiedSlide_001"、"copiedSlide_002"和"copiedSlide_003"。
- 第2、3、4页的页面ID分别为"copiedSlide_001"、"copiedSlide_002"、"copiedSlide_003"。
- 如果您使用
requests.push({deleteObject: {objectId: pageId}});
,复制完成后,第一页,即源幻灯片,将被删除。但我不确定这是否是你想要的结果。所以我把它作为注释放在脚本中。
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
一般来说,我希望人们将一些数据放入 google sheet 并提供一个按钮,该按钮获取数据并自动填充预制的 google 幻灯片。我选择了复制母版幻灯片然后用数据替换单个文本模块的方法。有没有更好的方法来实现我的目标?
这是母版幻灯片
这是我用于复制的代码,但它只能复制母版幻灯片一次,因为它创建的 objectId 始终相同:"copiedSlide_001"。我试图为 objectId 使用一个随机整数,但我没有让它工作。另外,我想该名称必须是可预测的才能在下一步中使用。 (将数据导入到新复制的幻灯片中)。
function duplicateSlide() {
var presentationId = "1XLtOv7FHWwv6R2QEZF_LEhF7twXTlY3IbvsVDKxdDtc";
var pageId = "g75e5d89173_0_0"
var requests = [{
"duplicateObject": {
"objectId": pageId,
"objectIds": {
"g75e5d89173_0_0": "copiedSlide_001",
}
}
} ]Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
}
如何让复制过程对我有利?
非常感谢任何帮助!
- 您想在 Google 个幻灯片中多次复制母版幻灯片。
- 您想为每个复制的幻灯片提供唯一的对象 ID,如
copiedSlide_001
。- 在复制之前,您需要知道所复制幻灯片的对象 ID。
- 您想使用 Google Apps 脚本实现此目的。
如果我的理解是正确的,这个答案怎么样?请将此视为几个可能的答案之一。
修改点:
- 在这个修改中,它使用batchUpdate的方法请求了几个DuplicateObjectRequest。
修改后的脚本:
在您 运行 脚本之前,请在高级 Google 服务中启用幻灯片 API。
function duplicateSlide() {
var presentationId = "1XLtOv7FHWwv6R2QEZF_LEhF7twXTlY3IbvsVDKxdDtc"; // Please set the Slides ID.
var pageId = "g75e5d89173_0_0"; // Please set the page ID of the source slide.
var newIDs = ["copiedSlide_001", "copiedSlide_002", "copiedSlide_003"]; // Please set the unique ID here.
var requests = newIDs.reverse().map(function(id) {
var obj = {};
obj[pageId] = id;
return {duplicateObject: {objectId: pageId, objectIds: obj}};
});
// requests.push({deleteObject: {objectId: pageId}});
Slides.Presentations.batchUpdate({'requests': requests}, presentationId);
}
- 当你运行脚本时,作为测试用例,源幻灯片被复制了3次。每个对象ID分别为"copiedSlide_001"、"copiedSlide_002"和"copiedSlide_003"。
- 第2、3、4页的页面ID分别为"copiedSlide_001"、"copiedSlide_002"、"copiedSlide_003"。
- 如果您使用
requests.push({deleteObject: {objectId: pageId}});
,复制完成后,第一页,即源幻灯片,将被删除。但我不确定这是否是你想要的结果。所以我把它作为注释放在脚本中。
参考文献:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。