使用 Google Slides Apps 脚本设置表格的宽度和高度
Setting width and height of tables with Google Slides Apps Script
我正在使用 Google Apps 脚本来操作幻灯片文件。我想在幻灯片上创建 table 并设置 row/column 的 height/width、特定单元格的 height/width 或整个 table 的 height/width。文档对此神秘地保持沉默,除了 this page 似乎不太有前途。
有人知道这个的解决方法,还是我必须求助于幻灯片 API?
- 您想使用 Google Apps 脚本修改 Google 幻灯片上 table 的宽度和高度。
- 您想修改特定单元格的宽度和高度。
我能像上面那样理解
创建新 table 时,您可以使用幻灯片服务设置 table 的高度和宽度。但是在当前阶段,created table 的高度和宽度以及特定的单元格还不能使用 Slides Service 进行修改。我认为这可能会在以后的更新中实现。
作为当前的解决方法,当使用幻灯片 API 时,可以实现这一点。
示例脚本 1:
在此示例脚本中,使用了幻灯片服务。新建 table 在幻灯片第一页的宽度和高度分别为 300 磅和 100 磅。
var slides = SlidesApp.getActivePresentation();
var slide = slides.getSlides()[0];
var table = slide.insertTable(3, 3, 0, 0, 300, 100);
示例脚本 2:
在此示例脚本中,使用了幻灯片 API。第1页table的单元格"B2"的宽和高分别修改为300磅和100磅
var slides = SlidesApp.getActivePresentation();
var slide = slides.getSlides()[0];
var objectId = slide.getTables()[0].getObjectId();
SlidesApp.getActivePresentation().saveAndClose();
var resource = {requests: [
{updateTableColumnProperties: {tableColumnProperties:
{columnWidth: {magnitude: 300, unit: "PT"}},
columnIndices: [1],
objectId: objectId,
fields: "columnWidth"
}},
{updateTableRowProperties: {tableRowProperties:
{minRowHeight: {magnitude: 100, unit: "PT"}},
rowIndices: [1],
objectId: objectId,
fields: "minRowHeight"
}}
]};
Slides.Presentations.batchUpdate(resource, slides.getId());
示例脚本 3:
在此示例脚本中,仅使用幻灯片API,可以获得"Sample script 1"和"Sample script 2"的结果。
var slides = SlidesApp.getActivePresentation();
var slide = slides.getSlides()[0];
var objectId = "sampleTable" + (new Date().getTime());
var resource = {requests: [
{createTable: {
rows: 3,
columns: 3,
elementProperties: {pageObjectId: slide.getObjectId(), size: {width: {magnitude: 300, unit: "PT"}, height: {magnitude: 100, unit: "PT"}}},
objectId: objectId
}},
{updateTableColumnProperties: {
tableColumnProperties: {columnWidth: {magnitude: 300, unit: "PT"}},
columnIndices: [1],
objectId: objectId,
fields: "columnWidth"
}},
{updateTableRowProperties: {
tableRowProperties: {minRowHeight: {magnitude: 100, unit: "PT"}},
rowIndices: [1],
objectId: objectId,
fields: "minRowHeight"
}}
]};
Slides.Presentations.batchUpdate(resource, slides.getId());
注:
- 当您使用幻灯片 API 时,请在 Advanced Google Services 启用它。
- 自 2019 年 4 月 8 日起,当创建新脚本项目(独立脚本类型和 container-bound 脚本类型)并在高级 Google 服务中启用 APIs 时, APIs 必须能够使用。因为在保存脚本项目时,默认 GCP 项目中会自动启用 API。
参考文献:
我正在使用 Google Apps 脚本来操作幻灯片文件。我想在幻灯片上创建 table 并设置 row/column 的 height/width、特定单元格的 height/width 或整个 table 的 height/width。文档对此神秘地保持沉默,除了 this page 似乎不太有前途。
有人知道这个的解决方法,还是我必须求助于幻灯片 API?
- 您想使用 Google Apps 脚本修改 Google 幻灯片上 table 的宽度和高度。
- 您想修改特定单元格的宽度和高度。
我能像上面那样理解
创建新 table 时,您可以使用幻灯片服务设置 table 的高度和宽度。但是在当前阶段,created table 的高度和宽度以及特定的单元格还不能使用 Slides Service 进行修改。我认为这可能会在以后的更新中实现。
作为当前的解决方法,当使用幻灯片 API 时,可以实现这一点。
示例脚本 1:
在此示例脚本中,使用了幻灯片服务。新建 table 在幻灯片第一页的宽度和高度分别为 300 磅和 100 磅。
var slides = SlidesApp.getActivePresentation();
var slide = slides.getSlides()[0];
var table = slide.insertTable(3, 3, 0, 0, 300, 100);
示例脚本 2:
在此示例脚本中,使用了幻灯片 API。第1页table的单元格"B2"的宽和高分别修改为300磅和100磅
var slides = SlidesApp.getActivePresentation();
var slide = slides.getSlides()[0];
var objectId = slide.getTables()[0].getObjectId();
SlidesApp.getActivePresentation().saveAndClose();
var resource = {requests: [
{updateTableColumnProperties: {tableColumnProperties:
{columnWidth: {magnitude: 300, unit: "PT"}},
columnIndices: [1],
objectId: objectId,
fields: "columnWidth"
}},
{updateTableRowProperties: {tableRowProperties:
{minRowHeight: {magnitude: 100, unit: "PT"}},
rowIndices: [1],
objectId: objectId,
fields: "minRowHeight"
}}
]};
Slides.Presentations.batchUpdate(resource, slides.getId());
示例脚本 3:
在此示例脚本中,仅使用幻灯片API,可以获得"Sample script 1"和"Sample script 2"的结果。
var slides = SlidesApp.getActivePresentation();
var slide = slides.getSlides()[0];
var objectId = "sampleTable" + (new Date().getTime());
var resource = {requests: [
{createTable: {
rows: 3,
columns: 3,
elementProperties: {pageObjectId: slide.getObjectId(), size: {width: {magnitude: 300, unit: "PT"}, height: {magnitude: 100, unit: "PT"}}},
objectId: objectId
}},
{updateTableColumnProperties: {
tableColumnProperties: {columnWidth: {magnitude: 300, unit: "PT"}},
columnIndices: [1],
objectId: objectId,
fields: "columnWidth"
}},
{updateTableRowProperties: {
tableRowProperties: {minRowHeight: {magnitude: 100, unit: "PT"}},
rowIndices: [1],
objectId: objectId,
fields: "minRowHeight"
}}
]};
Slides.Presentations.batchUpdate(resource, slides.getId());
注:
- 当您使用幻灯片 API 时,请在 Advanced Google Services 启用它。
- 自 2019 年 4 月 8 日起,当创建新脚本项目(独立脚本类型和 container-bound 脚本类型)并在高级 Google 服务中启用 APIs 时, APIs 必须能够使用。因为在保存脚本项目时,默认 GCP 项目中会自动启用 API。