2

我正在使用 Google Apps 脚本来操作幻灯片文件。我想在幻灯片上创建一个表格并设置行/列、特定单元格或整个表格的高度/宽度。文档对此神秘地保持沉默,除了这个页面似乎不太有希望。

有人知道解决方法,还是我必须求助于 Slides API?

4

1 回答 1

2
  • 您想使用 Google Apps 脚本修改 Google 幻灯片上表格的宽度和高度。
  • 您想修改特定单元格的宽度和高度。

我可以像上面那样理解。

创建新表格时,您可以使用幻灯片服务设置表格的高度和宽度。但是在当前阶段,创建的表格的高度和宽度以及特定的单元格还不能使用 Slides Service 进行修改。我认为这可能会在未来的更新中实现。

作为当前的解决方法,当使用 Slides API 时,可以实现这一点。

示例脚本 1:

在此示例脚本中,使用了幻灯片服务。在 Slides 第 1 页的宽度和高度上分别创建了 300 点和 100 点的新表格。

var slides = SlidesApp.getActivePresentation();
var slide = slides.getSlides()[0];
var table = slide.insertTable(3, 3, 0, 0, 300, 100);

示例脚本 2:

在此示例脚本中,使用了 Slides API。第1页表格的单元格“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:

在这个示例脚本中,仅使用 Slides API,可以获得“示例脚本 1”和“示例脚本 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());

笔记:

  • 当您使用 Slides API 时,请在Advanced Google Services中启用它。
    • 从 2019 年 4 月 8 日开始,当创建新脚本项目(独立脚本类型和容器绑定脚本类型)并在高级 Google 服务中启用 API 时,API 必须能够使用。因为在保存脚本项目时,默认 GCP 项目中会自动启用 API。

参考:

于 2019-05-16T12:08:39.417 回答