使用 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。

参考文献: